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

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

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

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

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

А вот с отключенным стеклом текст, конечно, рисовать нормально:

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

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

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

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

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

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

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

Примечания

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

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

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

graphics.SetTextRenderingHint(TextRenderingHintAntiAliasGridFit);

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

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


person Ian Boyd    schedule 23.11.2010    source источник


Ответы (1)


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

person Mark Ransom    schedule 23.11.2010
comment
Вы говорите, что вы не можете, вы должны принудительно сглаживать сглаживание шрифтов сглаживания. Принятый. - person Ian Boyd; 23.11.2010