最近打算给自己的小工具做一些提示文字的说明,让软件第一次打开的时候弹个提示窗口,引导一下用户怎么选择路径。
其中有个小需求,为了让按钮美观一点,需要按钮和一个checkbox变透明。
效果如下画框的地方:
查了一些资料,说得最多的是这样:
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% }