SetCompatibleTextRenderingDefault (true) и Graphics.DrawString () отрисовка текста - PullRequest
1 голос
/ 26 августа 2010

Я пишу плагин C # (ActiveX) для приложения, использующего SetCompatibleTextRenderingDefault(true) (принудительный стиль рендеринга текста в .net 1.1). Этот параметр изменяет часть текста, выводимого с помощью Graphics.DrawString (), в результате чего он выглядит немного нечеткое и смелое. В отличие от отдельных элементов управления ни класс Graphics, ни класс BitMap не имеют свойств UseCompatibleTextRendering, которые можно использовать для переопределения индивидуального поведения. Если не возиться, чтобы попытаться выяснить, что особенного в местах, где я рисую текст, который не искажается, есть ли что-нибудь, что я могу с этим поделать?

Приложение, для которого предназначен мой плагин, принадлежит третьей стороне, поэтому просто изменить SetCompatibleTextRenderingDefault вызов, который он мне причиняет, не вариант.

Редактировать: «особой» вещью является цвет фона и то, как он влияет на сглаживание; так что возиться с тем, как это исправить, установив прямоугольники, кажется не лучшим вариантом.

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Я бы посоветовал использовать TextRenderer.DrawText вместо Graphics.DrawString - даже при отключенном совместимом рендеринге текста, похоже, он дает более четкие и согласованные результаты.

1 голос
/ 26 августа 2010

Я нашел решение для моей проблемы, изменив TextRenderingHint на SingleBitPerPixelGridFit, который используется по умолчанию, когда не используется совместимый рендеринг текста. Когда вместо этого установлено значение true, используется перечисление ClearType, за исключением того, что по любой причине, в отличие от обычного текста с открытым типом, результаты выглядят ужасно и чрезвычайно трудно для чтения.

textGraphics.TextRenderingHint = 
             System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...