- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个简单的表单 (C#) 并通过 transparencyKey
和 BackColor
将其设置为透明,使其等于 White
。但是我在 Labels
、GroupBoxes
和 Buttons
中的文本仍然有一点白色背景(设置 BackColor
等于到透明
)。
结果如下:
我想让白色消失。看起来像这个片段 in 5:07
最佳答案
如果您想要消除锯齿,您将无法通过 TransparencyKey 获得它,这几乎是定义上的。 TransparencyKey 选择一种单一 颜色,并且该颜色的任何像素都变得完全透明。抗锯齿使用各种阴影来模拟平滑的边缘;这些阴影与您要设置为透明的单一颜色不匹配,因此这些像素将是不透明的,这正是我们在您的屏幕截图中看到的。
您需要使用 Windows 所说的“分层窗口”。有两种分层窗口;有一种使用 TransparencyKey(WinForms 支持,但不适合您的需要),还有一种让您为窗口的每个单独像素指定透明度值(看起来 WinForms 不支持开箱即用).
我的建议是使用 WPF 而不是 WinForms。WinForms 是一项古老的技术,确实不适合您要在此处创建的那种 UI 效果。它甚至不能很好地支持表单内的半透明控件,更不用说表单本身基于其内容的每像素 alpha 了。
WPF 可以开箱即用地实现每像素透明度。将窗口的 WindowStyle
设置为 None
并将 AllowsTransparency
设置为 true
,然后您就可以使用所有想要的透明效果.将窗口的背景颜色设置为 Transparent
(如果您希望点击空白区域仍会转到您的窗口)或 {x:None}
(如果您希望点击空白区域去你下面的 window )或半透明画笔;层叠半透明控件或 ARGB 位图;这一切看起来都很棒。
如果您出于某种原因真的想使用 WinForms,我猜您将有很多的工作要做。我建议使用谷歌搜索“WinForms 分层窗口”并复习 P/Invoke。
关于c# - 标签透明底色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34540678/
我是一名优秀的程序员,十分优秀!