Шаг 55.
Microsoft Visual C++ 2010. Начала.
Программирование. Графика. Карандаш

    На этом шаге мы рассмотрим особенности использования карандаша.

    Карандаш определяет вид линии - цвет, толщину и стиль. В распоряжении программиста есть два набора карандашей: стандартный и системный. Также программист может создать собственный карандаш.

    Стандартный набор карандашей - это цветные карандаши (всего их 141), которые рисуют непрерывную линию толщиной в один пиксель. Некоторые карандаши из стандартного набора приведены в таблице 1.

Таблица 1. Некоторые карандаши из стандартного набора
Карандаш Цвет
Pens::Red Красный
Pens::Orange Оранжевый
Pens::Yellow Желтый
Pens::Green Зеленый
Pens::LightBlue Голубой
Pens::Blue Синий
Pens::Purple Пурпурный
Pens::Black Черный
Pens::LightGray Серый
Pens::White Белый
Pens::Transparent Прозрачный

    Системный набор карандашей - это карандаши, цвет которых определяется текущей цветовой схемой операционной системы и совпадает с цветом какого-либо элемента интерфейса пользователя. Например, цвет карандаша SystemPens::ControlText совпадает с цветом, который в текущей цветовой схеме используется для отображения текста на элементах управления (командных кнопках и др.), а цвет карандаша SystemPens::WindowText - с цветом текста в окнах сообщений.

    Карандаш из стандартного (Pens) и системного (SystemPens) наборов рисует непрерывную линию толщиной в один пиксель. Если надо нарисовать пунктирную линию или линию толщиной больше единицы, то следует использовать карандаш программиста.

    Карандаш программиста - это объект типа Pen, свойства которого (таблица 2) определяют вид линии, рисуемой карандашом.

Таблица 2. Свойства объекта Pen
Свойство Описание
Color Цвет линии
Width Толщина линии (задается в пикселях)
DashStyle Стиль линии:
  • DashStyle::Solid - сплошная;
  • DashStyle::Dash - пунктирная, длинные штрихи;
  • DashStyle::Dot - пунктирная, короткие штрихи;
  • DashStyle::DashDot - пунктирная, чередование длинного и короткого штрихов;
  • DashStyle::DashDotDot - пунктирная, чередование одного длинного и двух коротких штрихов;
  • DashStyle::Custom - пунктирная линия, вид которой определяет свойство DashPattern
DashPattern Длина штрихов и промежутков пунктирной линии DashStyle::Custom

    Для того чтобы использовать карандаш программиста, его надо создать. Создает карандаш конструктор объекта Pen. Конструктор перегружаемый, т. е. для объекта Pen определено несколько конструкторов, которые различаются количеством параметров. Например, конструктор Pen(Цвет) создает карандаш указанного цвета толщиной в один пиксель, а Pen(Цвет, Толщина) - карандаш указанного цвета и толщины. В качестве параметра Цвет можно использовать константу типа Color (таблица 3). Другие константы типа Color (а их более 100) можно найти в справочной системе.

Таблица 3. Константы типа Color
Константа Цвет
Color::Red Красный
Color::Orange Оранжевый
Color::Yellow Желтый
Color.Green Зеленый
Color::LightBlue Голубой
Color::Blue Синий
Color::Purple Пурпурный
Color::Black Черный
Color::LightGray Серый
Color::White Белый
Color::Transparent Прозрачный

    Цвет, ширину линии и стиль карандаша, созданного программистом, можно изменить. Чтобы это сделать, надо изменить значение соответствующего свойства.

    Ниже приведен текст функции, которая демонстрирует создание и использование карандаша программиста.

private: System::Void pictureBox1_Paint(System::Object^  sender, 
		System::Windows::Forms::PaintEventArgs^  e) {
	 System::Drawing::Pen^ aPen; // карандаш

	 // создать красный "толстый" карандаш
	aPen = gcnew System::Drawing::Pen(Color::Red,2);
	e->Graphics->DrawRectangle(aPen,10,10,100,100);

	// теперь карандаш зеленый и его толщина 4 пикселя
	aPen->Width = 4;
	aPen->Color = Color::Green;

	// рисуем зеленым карандашом
	e->Graphics->DrawRectangle(aPen,20,20,100,100);
	
	// теперь линия пунктирная
	aPen->Width = 1;
	aPen->Color = Color::Purple;
	aPen->DashStyle = System::Drawing::Drawing2D::DashStyle::Dash;

	// рисуем пунктиром
	e->Graphics->DrawRectangle(aPen,30,30,100,100);
 }
Архив проекта можно взять здесь.

    Результат работы приложения приведен на рисунке 1.


Рис.1. Результат работы приложения

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг