Как нарисовать улучшенный текст на кривой в C#

В этом примере показано, как рисовать улучшенный текст вдоль изогнутого пути. Пример Нарисовать текст на кривой в C# показывает, как рисовать текст по искривленному пути. К сожалению, промежуток между буквами довольно посредственный (по крайней мере) в двух отношениях. Во-первых, расстояние просто слишком велико. Во-вторых, программа не добавляет пространства для пробелов.

Вторая проблема вызвана методом Graphics класса GraphicsString. Этот метод не позволяет оставлять места для пробелов, потому что они обычно не занимают места при рисовании текста. Например, этот метод дает строкам «A» и «A» такую же ширину, потому что конечные пробелы невидимы.

Чтобы нарисовать улучшенный текст, эта версия программы заменяет вызовы на MeasureString на вызовы следующего метода MeasureText.

// Возвращает размер некоторого текста, добавляя дополнительную комнату для пробелов.
private SizeF MeasureText(Graphics gr, string text, Font font)
{
    SizeF size = gr.MeasureString(text, font);
    int num_spaces = text.Length - text.TrimEnd().Length;
    size.Width += font.Size * num_spaces;
    return size;
}

Этот код вызывает MeasureString, как и раньше. Затем он вычисляет количество пробельных символов в конце строки и добавляет размер шрифта для каждого из них, прежде чем возвращать результат.

Другое, что этот пример делает для улучшения улучшенного текста, - это отрегулировать расстояние между символами в следующем коде.

float text_width = MeasureText(gr, chars_that_fit, font).Width;
const float kern = 0.8f;
start_point = new PointF(
    start_point.X + dx * text_width * kern,
    start_point.Y + dy * text_width * kern)

Эта версия кода умножает пространство, используемое куском оттянутого текста, на значение кернинга, которое в этом примере задано равным 0,8. Это перемещает символы немного ближе друг к другу.

В целом Кернинг - это процесс настройки расстояния между символами. Многие шрифты используют кернинг для определенных символов или пар символов. Например, шрифт может смещать соседние символы «ij» ближе друг к другу, так что j достигает бит под i.

Источник: http://csharphelper.com/blog/2017/08/draw-improved-text-curve-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector