Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Graphics.doc
Скачиваний:
20
Добавлен:
16.11.2019
Размер:
3.1 Mб
Скачать

Рисование текста с использованием gdi

Метод DrawText класса TextRenderer позволяет использовать функциональность GDI, связанную с возможностями размещения текста на форме или элементе управления. Функции отображения текста GDI в большинстве случаев обладают большей производительностью и более точно управляют параметрами текста, чем функции GDI+.

Примечание.

Методы DrawText класса TextRenderer не поддерживаются для печати. Для печати всегда следует использовать методы DrawString класса Graphics.

Пример

В следующем примере демонстрируется рисование текста на нескольких строках внутри прямоугольника с помощью метода DrawText.

------

Чтобы отобразить с помощью класса TextRenderer какой-либо текст, потребуется интерфейс IDeviceContext, например Graphics и Font, а также место для вывода текста и цвет этого текста. Формат текста можно также указать с помощью перечисления TextFormatFlags.

Компиляция кода

Предыдущий пример кода предназначен для работы с Windows Forms, для него необходим объект PaintEventArgs e, передаваемый в качестве параметра обработчику события PaintEventHandler.

How to: Align Drawn Text

When you perform custom drawing, you may often want to center drawn text on a form or control. You can easily align text drawn with the DrawString or DrawText methods by creating the correct formatting object and setting the appropriate format flags.

To draw centered text with GDI+ (DrawString)

  • Use a StringFormat with the appropriate DrawString method to specify centered text.

string text1 = "Use StringFormat and Rectangle objects to"

+ " center text in a rectangle.";

using (Font font1 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point))

{

Rectangle rect1 = new Rectangle(10, 10, 130, 140);

// Create a StringFormat object with the each line of text, and the block

// of text centered on the page.

StringFormat stringFormat = new StringFormat();

stringFormat.Alignment = StringAlignment.Center;

stringFormat.LineAlignment = StringAlignment.Center;

// Draw the text and the surrounding rectangle.

e.Graphics.DrawString(text1, font1, Brushes.Blue, rect1, stringFormat);

e.Graphics.DrawRectangle(Pens.Black, rect1);

}

To draw centered text with GDI (DrawText)

  • Use the TextFormatFlags enumeration for wrapping as well as vertically and horizontally centering text with the appropriate DrawText method.

string text2 = "Use TextFormatFlags and Rectangle objects to"

+ " center text in a rectangle.";

using (Font font2 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point))

{

Rectangle rect2 = new Rectangle(150, 10, 130, 140);

// Create a TextFormatFlags with word wrapping, horizontal center and

// vertical center specified.

TextFormatFlags flags = TextFormatFlags.HorizontalCenter |

TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak;

// Draw the text and the surrounding rectangle.

TextRenderer.DrawText(e.Graphics, text2, font2, rect2, Color.Blue, flags);

e.Graphics.DrawRectangle(Pens.Black, rect2);

}

Compiling the Code

The preceding code examples are designed for use with Windows Forms, and they require PaintEventArgse, which is a parameter of PaintEventHandler.