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

11
使用GDI+在玻璃上绘制文本:
graphics.DrawString(s, Length(s), font, MakePointF(x, y), brush);

你会注意到ClearType启用的文本在玻璃上绘制得非常不好:

alt text

然而,如果禁用了玻璃,则文字会变得更加清晰:

alt text

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

alt text

这里没有字体平滑

alt text

注意: 在您的显示器上,没有字体平滑看起来比它实际要好,因为StackOverflow会调整图片大小。

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

备注

  • Win32本地化
  • 非.NET(即本地化)
  • 不是Winforms(即本地化)
  • GDI+(即本地化)

马克的建议是,您无法遵循用户对文本呈现的偏好(即"SystemDefault")。ClearType在玻璃上不起作用,您不能使用它。
换句话说,如果您正在玻璃上进行渲染,则必须使用以下方法覆盖文本呈现:
graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

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

另请参阅

1个回答

2
问题在于绘图的方式。所有文本都是在黑色背景上绘制的,然后合成到玻璃背景上;半透明字体平滑处理与黑色混合,使其接近黑色。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接