Рисование текста (GDI+)
Метод DrawString класса Graphics можно использовать для рисования текста в указанном расположении или в указанном прямоугольнике.
Рисование текста в указанном расположении
Чтобы нарисовать текст в указанном расположении, вам потребуется графические объекты, FontFamily, Font, PointF и Brush.
Следующий пример рисует строку "Hello" в расположении (30, 10). Семейство шрифтов — Times New Roman. Шрифт, являющийся отдельным членом семейства шрифтов, — Times New Roman, размер 24 пикселя, обычный стиль. Предположим, что графика является существующим объектом графики.
FontFamily fontFamily(L"Times New Roman");
Font font(&fontFamily, 24, FontStyleRegular, UnitPixel);
PointF pointF(30.0f, 10.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
graphics.DrawString(L"Hello", -1, &font, pointF, &solidBrush);
На следующем рисунке показаны выходные данные предыдущего кода.
В предыдущем примере конструктор FontFamily получает строку, которая определяет семейство шрифтов. Адрес объекта FontFamily передается в качестве первого аргумента конструктору Шрифта. Второй аргумент, переданный конструктору шрифта , указывает размер шрифта, измеряемого в единицах, заданных четвертым аргументом. Третий аргумент задает стиль (обычный, полужирный, курсив и т. д.) шрифта.
Метод DrawString получает пять аргументов. Первый аргумент — это строка для рисования, а второй аргумент — длина (в символах, а не байтах) этой строки. Если строка завершается null, можно передать –1 для длины. Третий аргумент — адрес объекта Font, созданного ранее. Четвертый аргумент — это объект PointF , содержащий координаты левого верхнего угла строки. Пятый аргумент — адрес объекта SolidBrush , который будет использоваться для заполнения символов строки.
Рисование текста в прямоугольнике
Один из методов DrawString класса Graphics имеет параметр RectF. Вызывая этот метод DrawString , можно нарисовать текст, который выполняет оболочку в указанном прямоугольнике. Чтобы нарисовать текст в прямоугольнике, вам потребуется графические объекты, FontFamily, Font, RectF и Brush.
В следующем примере создается прямоугольник с левым верхним углом (30, 10), шириной 100 и высотой 122. Затем код рисует строку внутри прямоугольника. Строка ограничена прямоугольником и оболочками таким образом, чтобы отдельные слова не разбивались.
WCHAR string[] =
L"Draw text in a rectangle by passing a RectF to the DrawString method.";
FontFamily fontFamily(L"Arial");
Font font(&fontFamily, 12, FontStyleBold, UnitPoint);
RectF rectF(30.0f, 10.0f, 100.0f, 122.0f);
SolidBrush solidBrush(Color(255, 0, 0, 255));
graphics.DrawString(string, -1, &font, rectF, NULL, &solidBrush);
Pen pen(Color(255, 0, 0, 0));
graphics.DrawRectangle(&pen, rectF);
На следующем рисунке показан текст, нарисованный в прямоугольнике.
В предыдущем примере четвертый аргумент, переданный методу DrawString, является объектом RectF, который задает ограничивающий прямоугольник для текста. Пятый параметр имеет тип StringFormat. Аргумент имеет значение NULL, так как не требуется специальное форматирование строк.