Aero: How to draw ClearType text on glass?
Asked Answered
C

1

11

Using GDI+ to draw text on glass:

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

You'll notice that the ClearType enabled text draws very poorly on glass:

alt text

But with glass disabled the text, of course, draw fine:

alt text

By way of comparison here is Anti-alias font smoothing:

alt text

And here is no font smoothing:

alt text

Note: No font smoothing looks better than it really does because StackOverflow resizes the images on your monitor.

How do i draw ClearType text on glass?

Notes

  • Win32 native
  • not .NET (i.e. native)
  • not Winforms (i.e. native)
  • GDI+ (i.e. native)

What Mark is suggesting is that you cannot honor the user's preferences for text rendering (i.e. "SystemDefault". ClearType does not function on glass, and you cannot use it.

In other words, if you're rendering on glass you must override the text rendering with:

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

Otherwise you should leave the TextRenderingHint at it's default TextRenderingHintSystemDefault.

See also

Courson answered 23/11, 2010 at 16:29 Comment(0)
C
2

The problem is inherent to the way drawing is performed. All of your text is being drawn on a black background, then composited onto a glass background; the semi-transparent font smoothing is being combined with black to make near-black.

Chalcopyrite answered 23/11, 2010 at 17:32 Comment(1)
The answer you're saying is "you cannot, you must force anti-alias font smoothing". Accepted.Courson

© 2022 - 2024 — McMap. All rights reserved.