Aero: Как нарисовать текст ClearType на стекле? - PullRequest
11 голосов
/ 23 ноября 2010

Использование GDI + для рисования текста на стекле:

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

Вы заметите, что текст с включенным ClearType рисует очень плохо на стекле:

alt text

Но при отключенном стекле текст, конечно, нарисует нормально:

alt text

Для сравнения: Сглаживание шрифта сглаживания :

alt text

А вот без сглаживания шрифтов :

alt text

Примечание : сглаживание шрифтов не выглядит лучше, чем на самом деле, поскольку StackOverflow изменяет размеры изображений на мониторе.

Как нарисовать текст ClearType на стекле?

Примечания

  • Win32 native
  • не .NET ( т. Е. нативный)
  • not Winforms ( т.е. native)
  • GDI + ( то есть родной)

Что говорит Марк, так это то, что вы не можете соблюдать пользовательские настройки для рендеринга текста (т. Е. "SystemDefault". ClearType не работает на стекле и его нельзя использовать.

Другими словами, если вы выполняете рендеринг на стекле, вы должны переопределить рендеринг текста с помощью:

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

В противном случае вы должны оставить TextRenderingHint по умолчанию TextRenderingHintSystemDefault.

Смотри также

1 Ответ

2 голосов
/ 23 ноября 2010

Проблема связана с тем, как выполняется рисование.Весь ваш текст рисуется на черном фоне, затем накладывается на стеклянный фон;полупрозрачное сглаживание шрифтов комбинируется с черным, чтобы получить почти черный.

...