以前,就是在VB.6.0时代,在vb里做一个透明的标签Label控件是很容易的事,在VB.NET里,有些VB老用户发现做一个透明控件好像很难,或者就是做不出来。
其实在VB.NET里做透明Label控件也是很容易的,你只要掌握2个要点即可。
我们先从工具箱拖2个Label控件到窗体,Label1设置背景色为橙色,Label1设置背景色为透明色,Label1的宽和高尺寸大一些,Label2在Label1之上。代码如下:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.BackColor = Color.Orange '橙色
Label2.BackColor = Color.Transparent '透明色
End Sub
在运行前,如下图所示:
按F5运行后,结果发现,Label2的背景色只是跟窗体的的背景色一致,并没有对Label1这个控件透明。
问题就出在,在VB.NET,想让一个控件在另一个控件里成为一个背景色透明的控件,要满足2要素:一方面要设置这个控件的背景色为透明色,另一方面,还要让这个控件成为另一个控件的子控件。
所以,上面的代码,只要加一句让Label2成为Label1的子控件的语句即可。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.Controls.Add(Label2) '让Label2成为Label1的子控件
Label1.BackColor = Color.Orange '橙色
Label2.BackColor = Color.Transparent '透明色
End Sub
运行后,结果如下图所示。
可见,Label2这个标签在Label1控件里,背景透明了。
大家举一反三,让一个标签控件在一个Picture控件里做到背景透明,是不是也应该满足2个要求:1是标签的背景色是透明的,2是标签要成为Picture控件的子控件。
在工具箱里拖一个Picture控件代替Label1控件,设置一下Picture1控件的image属性设置一个合适的图片,代码改一下,如下:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PictureBox1.Controls.Add(Label2) '让Label2成为Picture1的子控件
Label2.BackColor = Color.Transparent '透明色
End Sub
运行结果如下:
可见,满足上面说的2要素,一般情况下,都可以做一个透明的Label标签控件。