【发布时间】:2018-08-19 14:54:07
【问题描述】:
我有一个在图片上的标签。所以我想让标签的背面颜色透明。当我将标签的背景色属性设置为透明时。图片没有通过文本框背景颜色显示。背景颜色获取表单的颜色。 Image
【问题讨论】:
-
这就是它的工作原理 - 透明意味着使用父级的任何背景颜色。没有一个控件“在”另一个控件“前面”的概念。请阅读How to Ask 并采取tour
标签: vb.net
我有一个在图片上的标签。所以我想让标签的背面颜色透明。当我将标签的背景色属性设置为透明时。图片没有通过文本框背景颜色显示。背景颜色获取表单的颜色。 Image
【问题讨论】:
标签: vb.net
标签的背景继承其容器背景。
您可以使用[Control].Controls.Add() 方法设置不同的Parent Container,该方法将Parent 属性设置为新Container(您也可以直接修改.Parent 属性)。
您可以在表单构造函数(表单的Public Sub New() - 在InitializeComponent() 之后插入代码)或Form.Load() 事件处理程序中重新定义标签的父级。
这里我都展示了,选择一个:
Public Sub New()
InitializeComponent()
PictureBox1.Controls.Add(Label1)
'Re-define the Label.Location if required
Label1.Location = New Point(0, 0)
End Sub
Form.Load() 事件中的相同内容:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PictureBox1.Controls.Add(Label1)
End Sub
作为替代方案,您可以使用 PictureBox .Paint() 事件的 e.Graphics 来简单地绘制相同的文本。
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
Using TextBrush As SolidBrush = New SolidBrush(Me.ForeColor)
e.Graphics.DrawString("BITS Registration ID", Me.Font, TextBrush, New Point(5, 5))
End Using
End Sub
【讨论】: