Шаг 58.
Microsoft Visual C++ 2010. Начала.
Программирование. Графика. Кисть (стандартная)

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

    Кисти используются для закраски внутренних областей геометрических фигур. Например, инструкция

  e->Graphics->FillRectangle(Brushes::DeepSkyBlue, x, y, w, h);
рисует закрашенный прямоугольник.

    В приведенном примере Brushes::DeepSkyBlue — это стандартная кисть темно-небесного цвета. Параметры x, y определяют положение прямоугольника; w, h — его размер.

    В распоряжении программиста есть следующие типы кистей:

Стандартная кисть закрашивает область одним цветом (сплошная закраска). Всего есть 140 кистей, некоторые из них приведены в таблице 1. Полный список кистей можно найти в справочной системе.

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

    Проиллюстрируем использование стандартной кисти.

    Создадим приложение, где можно будет выбирать кисть из списка, и по нажатию на кнопку Закрасить будет отображаться закрашенный прямоугольник выбранной кистью (рисунок 1).


Рис.1. Приложение на стадии проектирования

    Приведем текст приложения.

.   .   .   .
Form1(void)
{
	InitializeComponent();
	//
	//TODO: добавьте код конструктора
	//
	// установка начального цвета
	comboBox1->SelectedIndex = 0;
	// создание массива кистей
	hBrsh = gcnew array<Brush^>(141) {
		Brushes::AliceBlue, Brushes::AntiqueWhite, Brushes::Aqua, 
                Brushes::Aquamarine, Brushes::Azure, Brushes::Beige, 
                Brushes::Bisque, Brushes::Black, Brushes::BlanchedAlmond, 
		Brushes::Blue, Brushes::BlueViolet, Brushes::Brown, 
                Brushes::BurlyWood, Brushes::CadetBlue,
		Brushes::Chartreuse,Brushes::Chocolate, Brushes::Coral, 
                Brushes::CornflowerBlue, Brushes::Cornsilk, Brushes::Crimson, 
                Brushes::Cyan, Brushes::DarkBlue, Brushes::DarkCyan, 
		Brushes::DarkGoldenrod, Brushes::DarkGray, Brushes::DarkGreen, 
                Brushes::DarkKhaki, Brushes::DarkMagenta, Brushes::DarkOliveGreen, 
                Brushes::DarkOrange, Brushes::DarkOrchid, 
		Brushes::DarkRed, Brushes::DarkSalmon, Brushes::DarkSeaGreen, 
                Brushes::DarkSlateBlue, Brushes::DarkSlateGray, 
                Brushes::DarkTurquoise, Brushes::DarkViolet, Brushes::DeepPink, 
		Brushes::DeepSkyBlue, Brushes::DimGray, Brushes::DodgerBlue, 
                Brushes::Firebrick, Brushes::FloralWhite, Brushes::ForestGreen, 
                Brushes::Fuchsia, Brushes::Gainsboro, Brushes::GhostWhite, 
                Brushes::Gold, Brushes::Goldenrod, Brushes::Gray, Brushes::Green, 
		Brushes::GreenYellow, Brushes::Honeydew, Brushes::HotPink, 
                Brushes::IndianRed, Brushes::Indigo, Brushes::Ivory, 
                Brushes::Khaki, Brushes::Lavender, Brushes::LavenderBlush, 
                Brushes::LawnGreen, Brushes::LemonChiffon, Brushes::LightBlue, 
                Brushes::LightCoral, Brushes::LightCyan, 
                Brushes::LightGoldenrodYellow, Brushes::LightGray, 
                Brushes::LightGreen, Brushes::LightPink, Brushes::LightSalmon, 
                Brushes::LightSeaGreen, Brushes::LightSkyBlue, 
                Brushes::LightSlateGray, Brushes::LightSteelBlue, 
                Brushes::LightYellow, Brushes::Lime, Brushes::LimeGreen, 
		Brushes::Linen, Brushes::Magenta, Brushes::Maroon, 
                Brushes::MediumAquamarine, Brushes::MediumBlue, 
		Brushes::MediumOrchid, Brushes::MediumPurple, 
                Brushes::MediumSeaGreen, Brushes::MediumSlateBlue, 
		Brushes::MediumSpringGreen, Brushes::MediumTurquoise, 
                Brushes::MediumVioletRed, Brushes::MidnightBlue, 
		Brushes::MintCream, Brushes::MistyRose, Brushes::Moccasin, 
                Brushes::NavajoWhite, Brushes::Navy, Brushes::OldLace, 
                Brushes::Olive, Brushes::OliveDrab, Brushes::Orange, 
		Brushes::OrangeRed, Brushes::Orchid, Brushes::PaleGoldenrod, 
                Brushes::PaleGreen, Brushes::PaleTurquoise, Brushes::PaleVioletRed, 
                Brushes::PapayaWhip, Brushes::PeachPuff, Brushes::Peru, 
		Brushes::Pink, Brushes::Plum, Brushes::PowderBlue, Brushes::Purple, 
                Brushes::Red, Brushes::RosyBrown, Brushes::RoyalBlue, 
                Brushes::SaddleBrown, Brushes::Salmon, Brushes::SandyBrown, 
		Brushes::SeaGreen, Brushes::SeaShell, Brushes::Sienna, 
                Brushes::Silver, Brushes::SkyBlue, Brushes::SlateBlue, 
		Brushes::SlateGray, Brushes::Snow, Brushes::SpringGreen, 
                Brushes::SteelBlue, Brushes::Tan, Brushes::Teal, 
		Brushes::Thistle, Brushes::Tomato, Brushes::Transparent, 
                Brushes::Turquoise, Brushes::Violet, Brushes::Wheat, 
                Brushes::White, Brushes::WhiteSmoke, Brushes::Yellow, 
                Brushes::YellowGreen	};
}
.   .   .   .
private:
	array <Brush^> ^hBrsh; // массив кистей
// закраска
private: System::Void pictureBox1_Paint(System::Object^  sender,
	 	  System::Windows::Forms::PaintEventArgs^  e) {
	 // изображение прямоугольника выбранной кистью
	  e->Graphics->FillRectangle( hBrsh[comboBox1->SelectedIndex], 
		10, 10, 190, 160);
 }
// обработчик нажатия на кнопку Закрасить
private: System::Void button1_Click(System::Object^  sender, 
	 	 System::EventArgs^  e) {
	 // обращение к функции Paint() компонента pictureBox
	 pictureBox1->Invalidate();
 }
Архив проекта можно взять здесь.

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


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

    Принцип работы этого приложения следующий. Сначала создается массив кистей hBrush. Соотвествующие имена помещаются в ComboBox. При выборе имени из компонента ComboBox возвращается номер, который является номером соотвествующей кисти из массива hBrush. Выбранная кисть используется в обработчике pictureBox1_Paint для отрисовки прямоугольника.

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




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