Aero:如何在玻璃上绘制 ClearType 文本?

Posted

技术标签:

【中文标题】Aero:如何在玻璃上绘制 ClearType 文本?【英文标题】:Aero: How to draw ClearType text on glass? 【发布时间】:2011-05-14 14:04:51 【问题描述】:

使用 GDI+ 在玻璃上绘制文字:

graphics.DrawString(s, Length(s), font, MakePointF(x, y), brush);

您会注意到启用 ClearType 的文本在玻璃上的绘制效果非常很差:

但是在玻璃禁用的情况下,文本当然可以画得很好:

作为比较,这里是抗锯齿字体平滑

这里是没有字体平滑

注意:没有字体平滑效果比实际效果更好,因为 *** 会调整显示器上的图像大小。

如何在玻璃上绘制 ClearType 文字?

注意事项

Win32 原生 不是 .NET(本机) 不是 Winforms(本机) GDI+(原生)

Mark 的建议是您不能尊重用户对文本呈现的偏好(即“SystemDefault”。ClearType 在玻璃上不起作用,您不能使用它。

换句话说,如果你在玻璃上渲染,你必须覆盖文本渲染:

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

否则,您应该将TextRenderingHint 保留为默认TextRenderingHintSystemDefault

另见

Aero: How to draw solid colors on glass? Windows Aero: What color to paint to make “glass” appear? WPF: Extending glass into client area disables ClearType entirely

【问题讨论】:

【参考方案1】:

问题是执行绘图的方式所固有的。您的所有文本都绘制在黑色背景上,然后合成到玻璃背景上;半透明字体平滑与黑色相结合,使接近黑色。

【讨论】:

你说的答案是“你不能,你必须强制反锯齿字体平滑”。接受。

以上是关于Aero:如何在玻璃上绘制 ClearType 文本?的主要内容,如果未能解决你的问题,请参考以下文章

带有WPF的Aero玻璃框架上类似Windows资源管理器的搜索框

如何创建具有不同 Aero 玻璃框架的窗户?

PS 如何制作Vista的毛玻璃效果

让Qt支持Win7的Aero和毛玻璃效果

如何强制 Aero 绘制无边框窗口,就好像它处于活动状态一样,即使它不是?

在 Windows 10 上使用 DWM API 的 Aero 标题栏问题