Как нарисовать выравниваемый текст в C#

Класс StringFormat имеет свойства Alignment и LineAlignment, которые позволяют рисовать выравниваемый текст. Они позволяют указать, как вы хотите выравнивать текст по вертикали и по горизонтали. Свойство Alignment определяет горизонтальное выравнивание текста, а свойство LineAlignment определяет его вертикальное выравнивание.

Вы можете установить эти свойства в одно из значений, определяемых перечислением StringAlignment. Эти значения Near, Far и Center.

Рядом с выравнивает текст рядом с верхним или левым краем области рисования в зависимости от того, устанавливаете ли вы Alignment или LineAlignment. Дальний выравнивает текст рядом с правым или нижним краем области рисования. Как вы можете догадаться, Центр центрирует текст.

Этот метод DrawText этого примера, который показан в следующем коде, рисует некоторый выравниваемый текст в указанном прямоугольнике.

private void DrawText(Graphics gr, string text,
    Rectangle rect, StringAlignment alignment)
{
    gr.DrawRectangle(Pens.Blue, rect);
    using (StringFormat string_format = new StringFormat())
    {
        // Выравнивание центра.
        string_format.Alignment = alignment;
        string_format.FormatFlags = StringFormatFlags.LineLimit;
        string_format.Trimming = StringTrimming.Word;

        gr.DrawString(text, this.Font, Brushes.Black,
            rect, string_format);
    }
}

Код рисует прямоугольник, чтобы вы могли видеть, где он находится. Затем он создает объект StringFormat. Поскольку класс StringFormat реализует IDisposable, код должен вызывать его метод Dispose, когда это делается с объектом. Оператор using, показанный здесь, автоматически вызывает Dispose, когда код выходит из блока using, поэтому код не должен помнить, чтобы сделать это.

Этот код устанавливает свойство StringFormat объекта Alignment для указания того, как должен быть выровнен нужный текст. Затем он устанавливает FormatFlags в LineLimit, поэтому текст не заканчивается строкой, усеченной вертикально. (См. Пример Выполнение обрезки строк в C# .) Он также устанавливает Обрезать свойство, чтобы строки текста заканчивались на границах слов, а не отображали часть слова или символа в конце. (См. Пример Выполнение обрезки строк в C# .)

Наконец, код вызывает метод Graphics объекта DrawString для рисования образца.

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

// Левое выравнивание.
Rectangle rect = new Rectangle(gap, gap, wid, hgt);
e.Graphics.DrawRectangle(Pens.Blue, rect);
DrawText(e.Graphics, text, rect, StringAlignment.Near);

// Правое выравнивание.
rect.X += wid + gap;
e.Graphics.DrawRectangle(Pens.Blue, rect);
DrawText(e.Graphics, text, rect, StringAlignment.Far);

// Выравнивание центра.
rect.X += wid + gap;
e.Graphics.DrawRectangle(Pens.Blue, rect);
DrawText(e.Graphics, text, rect, StringAlignment.Center);

Источник: http://csharphelper.com/blog/2016/07/draw-justified-text-in-c/

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