GDI + рисует буквы, собранные вместе - PullRequest
2 голосов
/ 17 февраля 2012

Мне кажется, что я прочитал вопрос, похожий на этот, но не могу его найти, поэтому закройте его, если он повторяется.

Я пытаюсь нарисовать текст с Graphics::DrawString моноширинным шрифтомConsolas).Однако когда я рисую текст, буквы распределяются неравномерно.Вот как это выглядит:

enter image description here

Как видите, буквы сгруппированы в группы по два и три.Я прочитал эту статью и подумал, что предпринял адекватные шаги, чтобы избежать этого, используя StringFormat::GenericTypographic, но, видимо, нет.Я также использую TextRenderingHintClearTypeGridFit, потому что все остальные выглядят как мусор (и нет TextRenderingHintClearType без GridFit части).

Как я могу рисовать текст, как и все другие программы, которые рисуют текст смоноширинный шрифт, чтобы он выглядел правильно?

1 Ответ

4 голосов
/ 17 февраля 2012

Проблема в том, что GDI + использует другую (и давно заброшенную) систему для рисования текста. Начиная с .NET Framework 2.0, Microsoft изменила все элементы управления, чтобы фактически использовать GDI для визуализации текста, а не GDI +. Рендеринг текста в GDI аппаратно ускорен и продолжает улучшаться с помощью рендеринга символов, Uniscribe, лигатур. Рендеринг текста в GDI + не ускоряется аппаратно и не дает никаких исправлений или улучшений.

GDI также может рисовать сглаженные, используйте CLEARTYPE_QUALITY или ANTIALIASED_QUALITY.

Вот сравнение

  • GDI + (Graphics.DrawString)
  • GDI (TextRenderer.DrawText)

enter image description here

...