C# 标签透明底色

C# 标签透明底色,c#,winforms,transparency,C#,Winforms,Transparency,我正在制作一个简单的表单(C#),并通过transparencyKey和BackColor将其设置为透明,其值等于White。但是我在标签、分组框和按钮中的文本仍然有一点白色背景(将背景色设置为透明) 结果如下: 我想让白色消失。在这段视频中,您应该将背景色设置为透明 如果您想要消除混叠,您将无法通过透明键(TransparencyKey)获得它,这在很大程度上取决于定义。TransparencyKey拾取单一颜色,该颜色的任何像素都将变得完全透明。抗锯齿使用各种阴影来模拟平滑的边;这些阴影与

我正在制作一个简单的表单(C#),并通过
transparencyKey
BackColor
将其设置为透明,其值等于
White
。但是我在
标签
分组框
按钮
中的文本仍然有一点白色背景(将
背景色
设置为
透明

结果如下:


我想让白色消失。在这段视频中,您应该将背景色设置为透明

如果您想要消除混叠,您将无法通过透明键(TransparencyKey)获得它,这在很大程度上取决于定义。TransparencyKey拾取单一颜色,该颜色的任何像素都将变得完全透明。抗锯齿使用各种阴影来模拟平滑的边;这些阴影与您正在使之透明的单一颜色不匹配,因此这些像素将是不透明的,这正是我们在您的屏幕截图中看到的

您需要使用Windows所称的“分层窗口”。有两种分层窗口;有一种使用TransparencyKey(WinForms支持,但不适合您的需要),还有一种允许您为窗口的每个像素指定透明度值(看起来WinForms不支持开箱即用)

我的建议是使用WPF而不是WinForms。WinForms是一种古老的技术,并不适合您试图在这里创建的UI效果。它甚至不支持表单中的半透明控件,更不用说基于内容的表单本身的每像素alpha了

WPF可以实现开箱即用的每像素透明度。将窗口的
WindowStyle
设置为
None
并将
allowTransparency
设置为
true
,然后可以使用所需的所有透明度效果。将窗口的背景色设置为
透明
(如果您希望单击空白区域仍然可以进入窗口)或
{x:None}
(如果您希望单击空白区域可以进入您下方的窗口)或半透明笔刷;将半透明控件或ARGB位图放在彼此的顶部;一切看起来都很好


如果出于某种原因您真的想使用WinForms,我猜您还有很多工作要做。我建议在谷歌上搜索“WinForms分层窗口”并在P/Invoke上刷一下。

在绘图时尝试禁用抗锯齿功能text@Micky这将使文本看起来非常糟糕。可能会看到以下问题:我过去关闭了Clear Type来解决同样的问题。我在labelWhich backColor的属性GUI中没有看到Clear Type,ctg30?您可能想更详细地描述您的解决方案?这个答案非常简单,它本身几乎是透明的。