Методы вывода текста
Методы рисования
В классе Graphics имеются следующие три основные группы методов рисования: 1) методы рисование текста; 2) методы рисование линий и 3) методы рисование и заполнения фигур.
Для вывода текста на экран относительной левой верхней точки (рис. 8.17) можно использовать следующтий метод:
DrawString(string str, Font fn, Brush br,
float x, float y)
|
Для вывода текста в заданном прямоугольнике (рис. 8.18) можно использовать следующий метод:
DrawString(string str, Font fn, Brush br,
RectangleF ptf, StringFormat sf)
Параметрами данных методов являются:
str – выводимая строка текста (константа или объект класса string);
fnt – используемый фонт (объект класса Font);
br – используемая кисть (объект класса Brush);
x и y – координаты левого верхнего угла области вывода;
sf – объект типа StringFormat, который описывает расположение строки в заданной прямоугольной области; в данной структуре есть два свойства: sf.Alignment – положение по горизонтали (значения перечисления StringAlignment: Near (слева), Center (по центру), Far (справа) и свойство LineAlignment – положение вертикали (значения перечисления StringAlignment: Near (сверху), Center (по центру), Far (снизу).
Например:
StringFormat sf = new StringFormat();
sf.LineAlignment = StringAlignment.Center;
sf.Alignment = StringAlignment.Center;
gfx.DrawString("Вывод текста", fnt, Brushes.Blue,
new RectangleF(0, 0, 200, 100), sf);
В программе часто нужно определять размер области, занимаемый выводимым текстом. Это можно сделать с помощью метода MeasureString(string, Font) класса Graphics. Например:
Sizef s = gfx.MeasureString(str, Font);
Для рисования текста под углом вначале необходимо перенести начало координат в левыйверхний угол области вывода, выполнить поворот на заданный угол и только затем выполнить вывод текста. Например:
// Перенос системы кооординат
float x = 50f, y = 200f;
gfx.TranslateTransform(x, y);
//Поворот системы кооординат
gfx.RotateTransform(-45);
//Вывод текста
gfx.DrawString("Вывод под 45 градусов", fnt, Brushes.Black, 50,200);