WINFORM中的控件如何做透明效果,比如按钮、文本等

最近打算给自己的小工具做一些提示文字的说明,让软件第一次打开的时候弹个提示窗口,引导一下用户怎么选择路径。

其中有个小需求,为了让按钮美观一点,需要按钮和一个checkbox变透明。

效果如下画框的地方:

image.png


查了一些资料,说得最多的是这样:

private void SetBtnStyle(Button btn)
{
    btn.FlatStyle = FlatStyle.Flat;//样式
    btn.ForeColor = Color.Transparent;//前景
    btn.BackColor = Color.Transparent;//去背景
    btn.FlatAppearance.BorderSize = 0;//去边线
    btn.FlatAppearance.MouseOverBackColor = Color.Transparent;//鼠标经过
    btn.FlatAppearance.MouseDownBackColor = Color.Transparent;//鼠标按下
}

但是其实这样做的话,直接就没效果,因为还要设置该元素的父控件,很多CSDN的文章都抄来抄去,抄博客的自己根本没试过。

在上面这个例子中,按钮下面是一张图片,要让某控件对图片变透明或者半透明,首先要设置一下该控件的父控件,因为控件的背景色是从父控件继承来的,然后再对该控件做透明的设置,这样才有效果。

以上面的例子中,可以这么设置:

private void init()
{
    this.checkBox1.Parent = this.pictureBox1;
    this.button1.Parent = this.pictureBox1;
    this.button2.Parent = this.pictureBox1;
    this.checkBox1.BackColor = Color.Transparent;
    this.setBtn(button1);
    this.setBtn(button2);
}
private void setBtn(Button btn)
{
    btn.FlatStyle = FlatStyle.Flat;//样式
    btn.ForeColor = Color.Transparent;//前景
    btn.BackColor = Color.FromArgb(40, Color.White);//没鼠标时,透明度40%
    btn.FlatAppearance.BorderSize = 1;//去边线
    btn.FlatAppearance.MouseOverBackColor = Color.FromArgb(60, Color.White);//鼠标经过,透明度60%
    btn.FlatAppearance.MouseDownBackColor = Color.FromArgb(80, Color.White);//鼠标按下,透明度80%
}



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

桂ICP备19000498号-3