标签透明底色
Transparent backcolor of label
我正在制作一个简单的表单 (C#) 并通过 transparencyKey
和 BackColor
等于 White
将其设置为透明。但是我在 Labels
、GroupBoxes
和 Buttons
中的文本仍然有一点白色背景(设置 BackColor
等于 Transparent
)。
这是结果:
我想让白色消失。看起来像这个剪辑 in 5:07
您应该将背景颜色设置为透明。
如果您想要 anti-aliasing,您将无法使用 TransparencyKey 获得它,这几乎是根据定义。 TransparencyKey 选择一种 单一 颜色,并且该颜色的任何像素都变得完全透明。 Anti-aliasing 使用各种阴影来模拟平滑的边缘;这些阴影与您设置为透明的单一颜色不匹配,因此这些像素将是不透明的,这正是我们在您的屏幕截图中看到的。
您需要使用 Windows 所指的 "layered window"。分层有两种windows;有一种使用 TransparencyKey(WinForms 支持,但不适合您的需要),还有一种让您为 window 的每个像素指定透明度值(WinForms 似乎不支持)开箱即用)。
我的建议是使用 WPF 而不是 WinForms。WinForms 是一种古老的技术,确实不适合您想要的那种 UI 效果试图在这里创造。它甚至没有很好地支持 在 表单中的半透明控件,更不用说 per-pixel 基于其内容的表单本身的 alpha 了。
WPF 可以 开箱即用 per-pixel 透明度。将你的 window 的 WindowStyle
设置为 None
,将 AllowsTransparency
设置为 true
,然后你就可以使用你想要的所有透明效果了。将 window 的背景颜色设置为 Transparent
(如果您希望点击空白区域仍然转到您的 window)或 {x:None}
(如果您希望点击空白区域去你下面的 window 或 semi-transparent 画笔;层叠半透明控件或 ARGB 位图;一切都会很好看。
如果您出于某种原因真的想使用 WinForms,我猜您将有 很多 的工作要做。我建议谷歌搜索 "WinForms layered window" 并复习你的 P/Invoke.
我正在制作一个简单的表单 (C#) 并通过 transparencyKey
和 BackColor
等于 White
将其设置为透明。但是我在 Labels
、GroupBoxes
和 Buttons
中的文本仍然有一点白色背景(设置 BackColor
等于 Transparent
)。
这是结果:
我想让白色消失。看起来像这个剪辑 in 5:07
您应该将背景颜色设置为透明。
如果您想要 anti-aliasing,您将无法使用 TransparencyKey 获得它,这几乎是根据定义。 TransparencyKey 选择一种 单一 颜色,并且该颜色的任何像素都变得完全透明。 Anti-aliasing 使用各种阴影来模拟平滑的边缘;这些阴影与您设置为透明的单一颜色不匹配,因此这些像素将是不透明的,这正是我们在您的屏幕截图中看到的。
您需要使用 Windows 所指的 "layered window"。分层有两种windows;有一种使用 TransparencyKey(WinForms 支持,但不适合您的需要),还有一种让您为 window 的每个像素指定透明度值(WinForms 似乎不支持)开箱即用)。
我的建议是使用 WPF 而不是 WinForms。WinForms 是一种古老的技术,确实不适合您想要的那种 UI 效果试图在这里创造。它甚至没有很好地支持 在 表单中的半透明控件,更不用说 per-pixel 基于其内容的表单本身的 alpha 了。
WPF 可以 开箱即用 per-pixel 透明度。将你的 window 的 WindowStyle
设置为 None
,将 AllowsTransparency
设置为 true
,然后你就可以使用你想要的所有透明效果了。将 window 的背景颜色设置为 Transparent
(如果您希望点击空白区域仍然转到您的 window)或 {x:None}
(如果您希望点击空白区域去你下面的 window 或 semi-transparent 画笔;层叠半透明控件或 ARGB 位图;一切都会很好看。
如果您出于某种原因真的想使用 WinForms,我猜您将有 很多 的工作要做。我建议谷歌搜索 "WinForms layered window" 并复习你的 P/Invoke.