代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

航空:如何在玻璃上绘制透明文字?

  •  11
  • Ian Boyd  · 技术社区  · 14 年前

    使用gdi+在玻璃上绘制文本:

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

    您会注意到启用ClearType的文本会绘制 非常 玻璃不良:

    alt text

    当然,如果禁用了Glass,文本将绘制得很好:

    alt text

    通过比较,这里是 反混叠字体平滑 :

    alt text

    这里是 无字体平滑 :

    alt text

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

    我如何在玻璃上绘制清晰的文字?

    笔记

    • win32本机
    • 不是.NET( 本地)
    • 不是WinForms( 本地)
    • GDI+ 本地)

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

    换句话说,如果要在玻璃上渲染,则必须使用以下选项覆盖文本渲染:

    graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);
    

    否则你应该离开 TextRenderingHint 因为它是默认的 TextRenderingHintSystemDefault .

    另请参见

    1 回复  |  直到 12 年前
        1
  •  2
  •   Mark Ransom    14 年前

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

    推荐文章