Путь разработчика    

Рисуем гладкий текст в GraphicsPath в C#

Вы можете установить свойство TextRenderingHint объекта Graphics для AntiAliasGridFit, чтобы нарисовать гладкий текст. Однако, если вы поместите текст в объект GraphicsPath и нарисуете GraphicsPath, свойство TextRenderHint не даст вам гладкого текста. Вместо этого вам нужно установить свойство SmoothingMode объекта Graphics при рисовании GraphicsPath. Этот пример демонстрирует эти свойства.

Когда форма загружается, следующий код дает форму большого шрифта.

Python

Этот код устанавливает для свойства AutoScale формы значение None, поэтому форма не изменяется сама по себе, когда код изменяет шрифт. Затем он устанавливает шрифт в 30 пикселей Times New Roman жирным шрифтом. (Я измеряю шрифт в пикселях здесь, чтобы размер шрифта соответствовал размеру, используемому графикой, описанной в ближайшее время.)

Следующий обработчик события Paint рисует образец текста.

Python

Сначала код рисует текст при использовании значения по умолчанию для TextRenderingHint. Результат довольно хороший.

Затем код устанавливает TextRenderHint в AntiAliasGridFit и рисует еще один текст. Это дает лучший результат, но результат, заданный настройкой по умолчанию, также очень хорош. Фактически, вам нужно очень внимательно посмотреть на изображение, показанное здесь, чтобы заметить любую разницу вообще. Посмотрите внимательно на вершину символов D и S, чтобы увидеть небольшую разницу.

Также обратите внимание, что изменение TextRenderingHint изменило способ размещения текста, поэтому текст «DrawString» имеет разную ширину в двух образцах. В общем случае изменение параметров чертежа может изменить точное позиционирование текста.

Затем программа создает объект StringFormat, который необходим для рисования текста в GraphicsPath. Затем код создает объект GraphicsPath, добавляет к нему образец текста, а затем рисует GraphicsPath. Этот первый образец, который использует значение SmoothingMode по умолчанию, дает довольно уродливый результат.

Наконец, программа повторяет эти шаги, чтобы нарисовать еще один образец в GraphicsPath, на этот раз после установки SmoothingMode в AntiAlias. Этот результат превосходный.

Опять же, если вы посмотрите внимательно, вы увидите, что интервал между символами немного изменился. Текст, нарисованный графическим изображением, похоже, использует интервал, аналогичный используемому DrawString со стандартным TextRenderingHint.

Мораль заключается в том, что если вы хотите нарисовать гладкий текст в GraphicsPath, вам нужно установить SmoothingMode вместо TextRenderingHint.

Источник: csharphelper.com/blog/2017/07/draw-smooth-text-in-a-graphicspath-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Нарисуйте простую гистограмму в C#

Когда программа загружается, следующий код генерирует некоторые случайные данные. Этот код создает новый объект Random и использует его для заполнения масс...

25 02 2020 2:43:35

Разница между Mutable и неизменяемым в Python

Все в Python - это объект. Вы должны понимать, что Python представляет все свои данные как объекты. Изменчивость объекта определяется его типом. Некоторые...

24 02 2020 14:44:31

Многопоточное программирование сокетов в Java?

Все разработчики знакомы с написанием последовательных программ, каждая последовательная программа имеет начало, последовательность выполнения и конец. Пот...

23 02 2020 18:45:34

Вызов общедоступных методов, используя их имена в C#

Вы можете использовать отражение для вызова общедоступных методов, используя их имена. Следующий код показывает, как работает программа примера. В коде исп...

22 02 2020 4:22:17


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69