Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 具有多个控件的透明背景_Vb.net_Label_Controls_Transparent - Fatal编程技术网

Vb.net 具有多个控件的透明背景

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

我正在尝试创建一个应用程序,用户可以在其中移动三个透明背景的标签。如果一个标签位于另一个标签之上,则第二个标签应可见。 为此,我创建了一个自定义控件派生,因为我希望自定义标签有一个透明的背景->因此我通过SetStyle()设置SupportsTransparentBackColors和UserPaint

在主窗体上,我创建了标签,如您所见:

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