【发布时间】:2013-10-04 14:56:57
【问题描述】:
我有一个图形视图,我想覆盖一个半透明的表单,上面有一些控件,例如 TreeView
有点像这样(但背景是半透明的):
我尝试使用 2 种无边框形式,一个具有纯背景和 60% 不透明度的底层 + 一个带有透明键和其上的控件的覆盖。但是文本渲染很糟糕,尤其是当底层背景很淡且 3D 视图很暗时。
我能想到的唯一方法是捕获 3D 视图相关部分的位图并将其设置为表单的背景,然后希望它可以很好地呈现 TreeView。
这是最好的方法吗?我好像有点过分了。
这篇文章是我用于我的基本方法的内容: How can I add transparency to a c# form while keeping controls visible?
【问题讨论】:
-
即使没有清楚了解自己需要什么,我也要说winforms不适合这个。
-
这是在 Windows 中绘制文本方式的一个基本限制。 消除锯齿以改善字形的外观。最常见的抗锯齿技术是 ClearType,正如您的屏幕截图中使用的那样,它在字母的边缘添加带红色和蓝色的像素,将其混合到背景中。当背景不可预测时,这不起作用,像素不再混合并变得非常明显,产生非常难看的类型。只有关闭抗锯齿是解决此问题的一种方法,会产生始终难看的文本。
-
WPF 在此类图形密集型要求中表现更好。
标签: .net winforms graphics transparency