// Создание Font, с заданными именем типа, размером и начертанием.
Font f2 = new Font("WingDings", 50, FontStyle.Bold | FontStyle.Underline);
При создании f2 здесь используются связанные с помощью операции OR значения из перечня FontStyle.
public enum FontStyle {
Regular, Bold,
Italic, Underline, Strikeout
}
После установки параметров объекта Font следующей вашей задачей должна быть передача этого объекта методу Graphics.DrawString в виде параметра. Хотя метод DrawString перегружен, каждая из его вариаций требует одну и ту же информацию: отображаемый текст, шрифт для отображения этого текста, кисть, с помощью которой выполняется визуализация, и место, в которое нужно текст поместить.
private void MainForm_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
// Аргументы (String, Font, Brush, Point).
g.DrawString("Моя строка", new Font("WingDings", 25), Brushes.Black, new Point(0,0));
// Аргументы (String, Font, Brush, int, int)
g.DrawString("Другая строка", new Font("Times New Roman", 16), Brushes.Red, 40, 40);
}
Работа с семействами шрифтов
Пространство имен System.Drawing определяет также тип FontFamily, предлагающий абстракцию для группы гарнитур, имеющих одинаковый базовый дизайн, но с определенными вариациями стиля. Семейство шрифтов, например, такое как Verdana, может включить в себя несколько шрифтов, отличающихся по стилю и размеру. Например, Verdana Bold (полужирный) 12 пунктов и Verdana Italic (курсив) 24 пункта являются разными шрифтами в рамках одного семейства шрифтов Verdana.
Конструктор типа FontFamily получает на вход строку с именем семейства шрифтов, которое вы пытаетесь представить. После создания "общего семейства" вы можете создать более специфичный объект Font.
private void MainForm_Paint(object sender, PaintEventArgs e) {
Graphics g
// Создание семейства шрифтов.
FontFamily myFamily = new FontFamilу("Verdana");
// Передача семейства конструктору Font.
Font myFont = new Font(myFamily, 12);
g.Drawstring("Привет!", myFont, "Brushes.Blue, 10
}
Больший интерес представляет собой возможность сбора статистики в отношении данного семейства шрифтов. Скажем, вы создаете приложение текстового редактора и хотите определить среднюю ширину символа в конкретном объекте FontFamily. Или, например, вам нужна информация о надстрочных и подстрочных значениях для данного символа. Для получения такой информации тип FontFamily предлагает использовать специальные члены, описания которых приведены в табл. 20.5.
Таблица 20.5. Члены типа FontFamily
Член | Описание |
---|---|
GetCellAscent | Возвращает метрику надстрочного элемента для членов данного семейства |
SetCellDescent | Возвращает метрику подстрочного элемента для членов данного семейства |
GetLineSpacing | Возвращает расстояние между двумя последовательными строками текста для данного FontFamily с указанным FontStyle |
GetName | Возвращает имя данного FontFamily на указанном языке |
IsStyleAvailable | Индикатор доступности указанного FontStyle |
Для примера рассмотрите следующий обработчик события Paint, выводящий на печать ряд характеристик семейства шрифтов Verdana.
private void MainForm_Paint(object sender, PaintEventArgs e) {
Graphics g
FontFamily myFamily = new FontFamily("Verdana");
Font myFont = new Font(myFamily, 12);
int у = 0;
int fontHeight = myFont.Height;
// Отображение единицы измерения для членов FontFamily.
this.Text = "Единица измерения: GraphicsUnit." + myFont.Unit;