0

我的 FORM 设置为以下属性:

FormBorderStyle = None;
BackColor = 64, 0 64;
Transparency Key = 64, 0 64;

然后,我将 rectangleShape1 和 label1 放入我的表单中。

矩形形状 1属性:

BackColor = SaddleBrown;

标签1属性:

BackColor = transparent;

我希望label1.BackColor = transparent;在 rectangleShape1 的 BackColor 中,而不是在我的 FORM 的 BackColor 中。可能吗?我该怎么做?谢谢。

编辑

我希望我的 label1 的背景色是透明的,因为我想查看我的 rectangleShape1 的背景图像。

4

2 回答 2

1

将控件的 BackColor 设置为Color.Transparent意味着它使用其父背景。

以下是您的选择:

  1. 假设 rectangleShape1 是某种控件,您可以将其设置为标签的父级:

    label1.BackColor = Color.Transparent;
    label1.Parent = rectangleShape1;
    

    但是,这会将标签的范围限制为矩形。

  2. 创建您自己的透明标签

于 2013-11-01T11:37:11.487 回答
0

除非您实际覆盖 on_paint,否则 Label 和大多数控件中都不存在透明。透明只是设置父容器的颜色:

Label1.BackColor = Color.Transparent

=

Label1.BackColor = Label1.Parent.BackColor

只需将父容器设置为您的矩形,假设它是一个容器并且您可以使用。否则,您将需要派生一些类来制作矩形容器。

编辑:如果您想要其他类似行为的明显证据,请创建一个组框,在其中添加标签,然后更改字体大小、系列等,并检查标签自行更改。甚至认为他们指定了喜欢的父组框接管。为了防止这种行为,只需在组框中放置一个面板,然后将所有标签拖到里面,然后做同样的事情,你会看不到任何事情发生。

很少有属性会表现得像这样,不幸的是,多年来偶然发现了这一点。

于 2013-11-01T11:19:57.137 回答