Vb.net 具有多个控件的透明背景
我正在尝试创建一个应用程序,用户可以在其中移动三个透明背景的标签。如果一个标签位于另一个标签之上,则第二个标签应可见。 为此,我创建了一个自定义控件派生,因为我希望自定义标签有一个透明的背景->因此我通过SetStyle()设置SupportsTransparentBackColors和UserPaint 在主窗体上,我创建了标签,如您所见:Vb.net 具有多个控件的透明背景,vb.net,label,controls,transparent,Vb.net,Label,Controls,Transparent,我正在尝试创建一个应用程序,用户可以在其中移动三个透明背景的标签。如果一个标签位于另一个标签之上,则第二个标签应可见。 为此,我创建了一个自定义控件派生,因为我希望自定义标签有一个透明的背景->因此我通过SetStyle()设置SupportsTransparentBackColors和UserPaint 在主窗体上,我创建了标签,如您所见: Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventAr
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim AB As Customlabel = New Customlabel
AB.Left = 20
AB.Top = 20
AB.Name = "one"
Me.Controls.Add(AB)
Dim AC As Customlabel = New Customlabel
AC.Left = 50
AC.Top = 20
AC.Name = "two"
Me.Controls.Add(AC)
Dim AD As Customlabel = New Customlabel
AD.Left = 70
AD.Top = 20
AD.Name = "three"
Me.Controls.Add(AD)
End Sub
End Class
尽管如此,标签还是绘制成没有透明背景的矩形,重叠的CustomLabel不可见。如果将标签的父属性设置为窗体,则背景仅相对于窗体透明。(不适用于其他自定义标签)
有人知道如何解决这个问题吗?这可能不是一个好答案,但可能有用。 您可以使用具有透明背景的图像。例如.png或.gif等。 然后你的图像就是你的文本。 您可以在photoshop中轻松完成此操作。 试着玩一下,但我会自己画。 但一个快速解决方案是使用透明图像。太长;我没读过 要使任何对象透明,请键入: 如果是表格:
Me.TransparencyKey = BackColor
要使其恢复正常,请执行以下操作:
Me.TransparencyKey = Transparent
您没有更改任何内容,Label控件已经设置了这些样式标志。通常情况下,您尝试执行的操作是不可能的,透明度是通过让控件的父控件绘制背景来模拟的。工作正常,但您当然无法看到介于两者之间的控件,只能看到父控件。真正解决这个问题需要避免使用窗口的控件。像Telerik这样的组件供应商专门从事这方面的工作。WPF也是。谢谢你的回答!我将寻找WPF和Telerik。如果您愿意在容器上手动绘制控件的内容,可以这样做。要做到这一点需要大量的代码。如果你还没有读过这个问题,最好不要对答案胡乱猜测。
Me.TransparencyKey = Transparent