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资源管理器的搜索框