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

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

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

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

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

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

这里是没有字体平滑

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

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

注意事项

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

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

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

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

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

另见

【问题讨论】:

    标签: aero cleartype aero-glass


    【解决方案1】:

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

    【讨论】:

    • 你说的答案是“你不能,你必须强制反锯齿字体平滑”。接受。
    猜你喜欢
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2011-05-05
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多