在玻璃上的光滑文本

时间:2010-05-06 11:14:35

标签: c# .net winforms aero

我在那里看到很多其他样品在玻璃上画出光滑的文字。但我不能使用它们。我需要在运行时添加的每个标签都是平滑的。我不能只是在屏幕上“画”文字。

这一切都是可能的吗?是否有来源?

谢谢

1 个答案:

答案 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