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

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

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

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

альтернативный текст

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

альтернативный текст

Для сравнения приведем сглаживание шрифтов Anti-alias:

альтернативный текст

И здесь нет сглаживания шрифтов:

альтернативный текст

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

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

Заметки

  • Win32 родной
  • не.NET (т.е. родной)
  • не Winforms (т.е. родной)
  • GDI+ (т.е. родной)

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

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

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

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

Смотрите также

1 ответ

Решение

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

Другие вопросы по тегам