标签的透明背景色

3
我正在制作一个简单的表单(使用C#),并通过设置transparencyKeyBackColor等于White来使其透明。但是我的LabelsGroupBoxesButtons中的文本仍然有一点白色背景(设置BackColor等于Transparent)。以下是结果:

我希望让白色消失。看起来像这个视频片段中的5:07

尝试在绘制文本时禁用抗锯齿。 - user585968
@Micky 这会让文本看起来很糟糕。 - Cyral
也许可以看一下这个问题:https://dev59.com/HU_Ta4cB1Zd3GeqPA3ab - Cyral
我在标签的属性GUI中没有看到Clear Type。 - Felix
它位于操作系统的显示属性下。 - Mark Hall
显示剩余2条评论
2个回答

1
如果您想要抗锯齿,使用TransparencyKey是无法实现的,这几乎是显而易见的。 TransparencyKey选择一种单一的颜色,该颜色的任何像素都会变成完全透明。抗锯齿使用各种阴影来模拟平滑的边缘;这些阴影与您正在使其透明的单个颜色不匹配,因此这些像素将是不透明的,这正是我们在您的屏幕截图中看到的。
您需要使用Windows所称的“分层窗口”。有两种类型的分层窗口;一种是使用TransparencyKey(WinForms支持,但不适合您的需求),另一种是允许您为窗口的每个单独像素指定透明度值(看起来WinForms不支持开箱即用)。
我的建议是使用WPF而不是WinForms。 WinForms是古老的技术,真的不适合您在此处尝试创建的UI效果。它甚至没有良好的支持半透明控件表单内,更不用说基于其内容的表单本身的每个像素的透明度了。
WPF可以直接实现像素级透明度。将窗口的WindowStyle设置为None,AllowsTransparency设置为true,然后您就可以使用所有透明效果。将窗口的背景颜色设置为Transparent(如果您希望单击空白区域仍然转到您的窗口),或{x:None}(如果您希望单击空白区域转到您下面的窗口),或半透明画刷;在彼此之上叠加半透明控件或ARGB位图;一切看起来都很好。
如果您真的想出于某种原因使用WinForms,我猜您将面临大量工作。建议您搜索“WinForms分层窗口”并提高您的P / Invoke技能。

-1

你应该将背景颜色设置为透明。


哪个背景颜色,ctg30? - Felix
1
您可能想要更详细地描述您的解决方案? - Ian
1
这个答案太简略了,几乎是透明的。 - APC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接