11

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

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

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

替代文字

但是玻璃禁用了文本,当然,画得很好:

替代文字

作为比较,这里是Anti-alias 字体平滑

替代文字

这里没有字体平滑

替代文字

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

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

笔记

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

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

换句话说,如果您在玻璃上渲染,您必须使用以下命令覆盖文本渲染:

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

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

也可以看看

4

1 回答 1

2

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

于 2010-11-23T17:32:20.073 回答