我在那里看到很多其他样品在玻璃上画出光滑的文字。但我不能使用它们。我需要在运行时添加的每个标签都是平滑的。我不能只是在屏幕上“画”文字。
这一切都是可能的吗?是否有来源?
谢谢
答案 0 :(得分:0)
请仔细阅读本文http://msdn.microsoft.com/en-us/magazine/cc163435.aspx#S6
它有点长,但它回答了很多你的问题,而且更多关于玻璃。
但直接与您相关的部分是
一个特别的问题是 渲染黑色的GDI项目使用 位模式0x00000000-也是 碰巧是完全透明的 黑色,如果你使用阿尔法 渠道。这意味着如果你画画 用黑色GDI刷或笔你会 得到透明的颜色,而不是黑色 一。这是最大的问题 是当你尝试使用默认值 文本颜色控制文本 位于玻璃区域的标签。 由于默认文本颜色是 通常是黑色,DWM会考虑 这是透明的和文本 将写在玻璃上 不正确。可以看到一个例子 图10.编写第一行 使用GDI +,第二个是文本标签 使用默认颜色控制。如 你可以看到,它几乎难以辨认 因为它实际上是错误的 渲染的文本显示为灰色, 不是黑色。
令人高兴的是,有很多方法 围绕这个问题。使用所有者绘制 控制是一个。渲染到位图 有一个alpha通道是另一个。 幸运的是,最简单的方法 控件上的文字是让.NET Framework 2.0为您使用GDI +。这个 很容易通过设置 UseCompatibleTextRendering属性 你的控件。默认情况下,这个 属性设置为false以便这样做 为以前的版本编写的控件 .NET Framework将呈现 相同。但如果你把它设置为真,你的 文字会看起来正确。 您可以使用全局设置属性 该 Application.SetUseCompatibleTextRenderingDefault 方法
他还提供了可以放在Main()
中的示例代码static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(true);
Application.Run(new GlassForm());
}
但我建议阅读这篇文章,它将清除很多Aero / Glass的内容
干杯, Phyx