我正在尝试创建一个应用程序,用户可以使用透明背景移动三个标签。如果一个标签位于另一个标签上,则第二个标签应该是可见的。 为此,我创建了一个自定义控件派生,因为我希望自定义标签具有透明背景 - >所以我通过SetStyle()
设置SupportsTransparentBackColors和UserPaintPublic Class Customlabel
Inherits System.Windows.Forms.Control
Public Sub New()
MyBase.New()
Me.SetStyle(Windows.Forms.ControlStyles.UserPaint, True)
Me.SetStyle(Windows.Forms.ControlStyles.DoubleBuffer, True)
Me.SetStyle(Windows.Forms.ControlStyles.SupportsTransparentBackColor, True)
InitializeComponents()
End Sub
Private Sub InitializeComponents()
Me.Width = 100
Me.Height = 100
End Sub
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
e.Graphics.DrawString("Test", New System.Drawing.Font("Arial", 12), New System.Drawing.SolidBrush(Color.Black), New System.Drawing.Point(0, 0))
End Sub
End Class
在主表单上我创建了标签,如您所见:
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不可见。如果我将标签的父属性设置为窗体,则背景仅相对于窗体是透明的。 (而不是其他CustomLabels)
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
这可能不是一个好的答案,但可能有效。 您可以使用透明背景的图像。像.png或.gif等 然后你的形象就是你的文字。 你可以轻松地在photoshop中做到这一点。 试着玩它但我会自己画这个项目。 但快速解决方法是使用透明图像。
答案 1 :(得分:-1)
太长了;没读过
要使任何对象透明,请输入:
如果形式:
Me.TransparencyKey = BackColor
将其恢复正常:
Me.TransparencyKey = Transparent