На этом шаге мы рассмотрим вывод текста созданным шрифтом.
В примере предыдущего шага для вывода текста используется шрифт формы, заданный свойством Font. Если текст надо вывести шрифтом, отличным от шрифта,
заданного для формы, то этот шрифт следует создать - объявить и инициализировать объект типа Font.
Инструкция создания шрифта (вызова конструктора) выглядит так:
System::Drawing::Font^ aFont = gcnew System::Drawing::Font(FontFamily,Size,FontStyle);
Параметр FontFamily (строкового типа) задает шрифт, на основе которого создается новый (определяет семейство, к которому относится создаваемый шрифт). В
качестве значения параметра FontFamily можно использовать название шрифта, зарегистрированного в системе (Arial, Times New Roman, Tahoma).
Параметр Size задает размер (в пунктах) шрифта. Параметр FontStyle определяет стиль символов шрифта:
- FontStyle::Bold - полужирный;
- FontStyle::Italic - курсив;
- FontStyle::UnderLine - подчеркнутый.
Параметр FontStyle можно не указывать. В этом случае будет создан шрифт обычного начертания (FontStyle::Regular).
Следует обратить внимание, что изменить характеристики созданного шри-та нельзя (свойства FontFamily, Size и Style объекта Font
определены "только для чтения"). Поэтому если в программе предполагается использовать разные шрифты, их необходимо создать.
В примере ниже приведена функция обработки события Paint, демонстрирующая создание и использование шрифтов для вывода текста на поверхность формы
(рисунок 1).
private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { int x,y; x = 10; y = 10; String^ st = "Microsoft Visual Studio 2010"; System::Drawing::Font^ rFont = gcnew System::Drawing::Font ("Tahoma", 11, FontStyle::Regular); System::Drawing::Font^ bFont = gcnew System::Drawing::Font ("Tahoma", 11, FontStyle::Bold); System::Drawing::Font^ iFont = gcnew System::Drawing::Font ("Tahoma", 11, FontStyle::Italic); e->Graphics->DrawString(st, rFont, Brushes::Black, x, y); e->Graphics->DrawString(st, bFont, Brushes::Black, x, y+20); e->Graphics->DrawString(st, iFont, Brushes::Black, x, y+40); }
Архив проекта можно взять здесь.
Рис.1. Вывод текста на поверхность формы методом DrawString
На следующем шаге мы продолжим изучение этого вопроса.