- •Основы визуального программирования
- •Учебное пособие
- •Основы визуального программирования
- •1. Создать новый проект Windows Forms 91
- •Введение
- •Интегрированная среда разработки Microsoft Visual Studio
- •1.1 Многофайловая организация программ
- •1.2 Структура проекта в среде Visual Studio
- •1.3 Создание консольного приложения в Visual Studio
- •1.4 Отладка программы
- •Объектно-ориентированное программирование
- •Наследование;
- •Описание класса
- •Описание объектов
- •Методы класса
- •Наследование
- •Иерархия классов
- •Виртуальные методы. Полиморфизм.
- •Контейнерные классы
- •Принципы разработки Windows – приложений
- •Создание простейшего Windows-приложения
- •3.2 Диалоговые окна
- •3.3 Элементы управления и их свойства
- •Элемент управления Button
- •Элемент управления TextBox
- •Элементы управления MaskedTextBox и ToolTip
- •Элемент управления Label
- •Элемент управления ListBox
- •3.3.5. Элемент управления ComboBox
- •Элемент управления RadioButton
- •Элемент управления CheckBox
- •Элемент управления RichTextBox
- •Чтобы загрузить файл в элемент управления RichTextBox в процедуре обработки события для кнопки Button1:
- •Элемент управления NumericUpDown
- •Элемент управления Timer
- •Щелчок мыши и его обработка
- •3.5 Создание меню приложений
- •3.5.1 Создание главного меню
- •3.5.2 Создание контекстного меню
- •Рисование на форме
- •3.7 Создание многооконных приложений
- •Чтобы добавить новую форму Windows Forms выполните следующие действия:
- •Лабораторный практикум по визуальному программированию лабораторная работа 1 Создание простейшего Windows-приложения
- •Создать новый проект Windows Forms
- •Разместить на форме элементы управления
- •Настроить свойства элементов управления.
- •Создать обработчик событий для кнопки.
- •Выполните компиляцию программы.
- •Запуск программы на выполнение.
- •Добавление на форму элементов управления.
- •Создать новый проект Windows Forms и назвать его, например, Form_Second.
- •Разместить на форме элементы управления
- •Создать обработчик событий для кнопки
- •Лабораторная работа 2 создание приложения Windows Forms для вызова рекурсивных функций
- •Создать новый проект Windows Forms
- •Разместить на форме элементы управления
- •Настроить свойства элементов управления.
- •Создать обработчик событий для кнопки.
- •Запустить программу на выполнение.
- •Лабораторная работа 3 Создание Windows-приложения для обработки массива
- •Создать новый проект Windows Forms и назвать его, например, Form_lab2.
- •Разместить на форме элементы управления
- •Создать обработчик событий для кнопки
- •Лабораторная работа 4 Создание меню в Windows-приложение
- •Создать новый проект Windows Forms с именем form_lab3.Cpp.
- •Разместить на форме элементы управления и настроить их свойства
- •Создать обработчики событий для остальных пунктов меню
- •Заключение
- •Список литературы
Рисование на форме
В клиентской области формы можно не только размещать элементы управления, но и выполнять рисование. В Framework.Net реализован расширенный графический интерфейс GDI+, обладающий широким набором возможностей. В пространство System::Drawing и System.Drawing2D включено большое количество классов, которые позволяют выполнить рисование в форме.
Для рисования в формах нужно иметь объект класса Graphics, методы которого позволяют выполнять рисование в формах, и такие инструменты рисования, как – цвет, перо, кисть, шрифт.
Класс Graphics – это основной класс, с помощью которого выполняется рисование. Создание объектов класса Graphics выполняется не обычным способом, с помощью операции gcnew, а с помощью методов CreateGraphics().
Методы рисования используют такие специальные инструменты, как:
цвет (color) – задает цвет пикселей области рисования;
перо (pen) – задает тип (шаблон) линии, с помощью которой выполняется рисование графического объекта;
кисть (brush) – задает шаблон заполнителя замкнутых областей формы;
шрифт (font) – задает способ рисования символов.
Класс перьев Pen
Для описания перьев имеется класс Pen. Создание объекта Pen выполняется с помощью операции gcnew, при этом можно сразу задать цвет линии:
System::Drawing::Pen^P=gcnew System::Drawing::Pen(Color::Black);
Основным свойством данного класса является DashStyle, с помощью которого задается стиль линии, значения перечисления DashStyle, такие, как Solid (сплошная), Dot (точка), Dash (тире), DashDot (тире-точка), DashDotDot (тире-точка-точка).
P->DashStyle::set(Drawing::Drawing2D::DashStyle::DashDotDot);
Толщину линии можно изменить с помощью свойства Width:
P->Width=5;
Вместо создания нового пера можно использовать свойство статического класса Pens, в котором описаны системные перья толщиной в 1 пиксель. Например, Pens::Blue – перо голубого цвета толщиной в 1 пиксель.
Класс кистей Brush
Для работы с одноцветными кистями имеется статический класс Brushes, в котором заданы одноцветные кисти стандартных цветов. Например: Brushes::Red – кисть для закраски сплошным красным цветом.
Кроме того можно создать собственную кисть класса SolidBrush, для которой можно задать собственный цвет заданной интенсивностью.
Цвет и его интенсивность (прозрачность) задается методом FromArgb объекта Color:
Color col=Color::FromArgb(alpha, сolor);
где
- параметр alpha – задает прозрачность цвета. Чтобы создать непрозрачный цвет, установите для alpha значение 255.Чтобы создать полупрозрачный цвет, установите для alpha любое значение от 1 до 254.
- параметр сolor – задает базовый цвет на основе которого создается новый.
Например:
Color customColor = Color::FromArgb( 255, Color::Blue );
SolidBrush^ Bsh = gcnew SolidBrush( customColor );
Создана кисть Bsh непрозрачного голубого цвета.
Для создания кисти класса HatchBrush со стандартным геометрическим рисунком можно создать объект данного класса, для которого выбрать узор, цвет рисунка и цвет фона:
System::Drawing::Drawing2D::HatchBrush^ Brsh = gcnew System::Drawing::Drawing2D::HatchBrush
(System::Drawing::Drawing2D::HatchStyle::Cross, Color::Aqua,Color::Red );
Где Cross – узор, Aqua – цвет линий узора, Red –цвет фона.
Класс шрифтов Font
Для выполнения вывода текста в клиентской области формы нужно указать используемый шрифт, который задаются с помощью класса Font.
При создании объекта класса Font задается тип шрифта и его размер. Кроме того можно задать стиль шрифта. Например:
System::Drawing::Font^fnt = gcnew System::Drawing::Font
("Times New Roman", 24);
Строка с названием шрифтов, которые установлены на компьютере может содержать такие названия, как "Times New Roman", "Arial" или "Courier New".
Третьим параметром можно задать стили шрифта, такие как: Regular (обычный, по умолчанию), Bold (жирный), Italic (курсив), Underline (подчеркнутый), Strikeout (перечеркнутый). Например:
System::Drawing::Font^fnt = gcnew System::Drawing::Font ("Courier New", 12,FontStyle::Bold | FontStyle::Italic);
Методы рисования
В классе Graphics имеются следующие три основные группы методов рисования: 1) методы рисование текста; 2) методы рисование линий и 3) методы рисование и заполнения фигур.
Рисование текста
Для вывода текста на экран относительной левой верхней точки можно использовать следующий метод:
DrawString(Текст, шрифт, кисть, координаты точки);
Рассмотрим пример вывода текста на форму нажатием кнопка:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Graphics ^gf = CreateGraphics();
System::Drawing::Font^fnt = gcnew System::Drawing::Font ("Times New Roman", 24);
SolidBrush^ shBsh = gcnew SolidBrush( Color::Red);
gf->DrawString("Вывод текста!",fnt,shBsh,50,50);
}
Пример формы после нажатия кнопки "Текст" приведен на рисунке 3.48.
Рисунок 3.48 – Результат вывода текста
Для рисования текста под углом вначале необходимо перенести начало координат в левый-верхний угол области вывода, выполнить поворот на заданный угол и только затем выполнить вывод текста. Например:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Graphics ^gf = CreateGraphics();
System::Drawing::Font^fnt = gcnew System::Drawing::Font ("Times New Roman", 24);
SolidBrush^ shBsh = gcnew SolidBrush( Color::Red);
gf->DrawString("Вывод текста!",fnt,shBsh,50,50);
}
Пример результатов после нажатия кнопки "Текст" приведен на рисунке 3.49.
Рисунок 3.49- Форма с текстом под углом 45о.
Рисования простых фигур
Для рисования простых фигур с помощью выбранного пера используется следующий набор перегруженных методов класса Graphics:
DrawLine(. . .) – рисование линии. Параметрами этого метода, кроме пера, являются координаты двух точек – начала и конца линии.
DrawRectangle(...) – рисование прямоугольника. Параметрами этого метода являются перо, координаты верхнего левого угла, ширина и высота.
DrawEllipse(...) – рисование эллипса. Эллипс создается как геометрическая фигура, вписанная в прямоугольник. То есть самого прямоугольника на рисунке не видно, но параметры эллипса, кроме пера, одновременно являются параметрами такого прямоугольника.
DrawPoligon(...) – рисование многоугольника. Рисует многоугольник, определяемый массивом структур Point.
DrawPie(...) – рисование сектора круга. Рисует сектор, определяемый эллипсом, который задан парой координат, шириной, высотой и двумя радиальными линиями.
Эти методы рисуют только контуры фигуры, но не закрашивают их внутреннюю область.
Рассмотрим пример вывода на форму эллипса пером заданного стиля и толщины. Рисование фигуры инициируется щелчком мыши по форме. Результат приведен на рисунке 3.50.
private: System::Void Form1_MouseClick(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
System::Drawing::Pen^P=gcnew System::Drawing::Pen(Color::Black);
Graphics ^gfx = CreateGraphics();
P->DashStyle::set(Drawing::Drawing2D::DashStyle::DashDotDot);
P->Width=5;
gfx->DrawEllipse(P,70,50,150, 80);
}
Рисунок 3.50 – Вывод эллипса на форму
Приведем еще один пример рисования многоугольника на форме. Результаты приведены на рисунке 3.51.
private: System::Void Form1_MouseClick(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
{
Graphics ^gfx = CreateGraphics();
Point x1= Point(140,50);
Point x2= Point(70,100);
Point x3= Point(70,200);
Point x4=Point( 200,200);
Point x5=Point(200,100);
array <Point>^xx={x1,x2,x3,x4,x5};
gfx->DrawPolygon(Pens::Red,xx);
}
Рисунок 3.51 – Построение многоугольника
Рисование и закраска фигур
Класс Graphics для закраски областей заданной кистью содержит набор перегруженных методов:
FillRectangle(...) – закраска прямоугольной области;
FillEllipse(...) – закраска эллипса;
FillPoligon(...) – закраска прямоугольника;
FillPie(...) – закраска сектора круга.
Для закраски фигур вместо параметра Pen в этих методах используется параметр Brush.
Приведем пример рисования прямоугольника с заливкой стандартным геометрическим узором. Результат приведен на рисунке 3.52.
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Graphics ^gfx = CreateGraphics();
System::Drawing::Drawing2D::HatchBrush^ Brsh = gcnew System::Drawing::Drawing2D::HatchBrush
(System::Drawing::Drawing2D::HatchStyle::Cross, Color::Aqua,Color::Red );
gfx->FillRectangle(Brsh,50,50,160,100);
}
Параметры объекта Brush смотрите выше.
Рисунок 3.52 – Закраска фигуры
Рекомендуем самостоятельно попробовать другие стили заполнения, такие как DarkHorizontal, Weave, Percent20, SmallGrid и другие.
