Загрузка данных
Практическое задание
Тема: Работа с объектами Graphics, Pen, Brush и Font в Windows Forms.
Цель: Получить практические навыки получения объекта Graphics, создания перьев (Pen) и кистей (Brush), использования методов для отрисовки геометрических фигур и вывода текста в заданной системе координат.
Теоретическая справка
Для выполнения задания необходимо использовать следующие основные классы и принципы:
1.Получение объекта Graphics
В обработчике события Paint элемента управления (например, PictureBox) объект Graphics передается через свойство e.Graphics аргумента PaintEventArgs. Это стандартный способ организации рисования на поверхности элемента.
csharp
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
// последующие команды рисования
}
2.Класс Pen (перо)
Используется для рисования линий и контуров фигур. Создается с указанием цвета и, опционально, толщины.
csharp
Pen myPen = new Pen(Color.Blue, 3); // синее перо толщиной 3 пикселя
3.Класс Brush (кисть)
Используется для заливки замкнутых областей.
oSolidBrush – сплошная заливка.
oHatchBrush – штриховая заливка.
csharp
SolidBrush solidBrush = new SolidBrush(Color.Yellow);
HatchBrush hatchBrush = new HatchBrush(HatchStyle.Cross, Color.Red, Color.White);
4.Класс Font (шрифт)
Определяет начертание, размер и стиль шрифта для вывода текста.
csharp
Font myFont = new Font("Arial", 14, FontStyle.Bold);
5.Класс ColorDialog
Стандартный диалог выбора цвета. Позволяет пользователю выбрать цвет через графический интерфейс.
csharp
ColorDialog colorDialog = new ColorDialog();
if (colorDialog.ShowDialog() == DialogResult.OK)
{
Color selectedColor = colorDialog.Color;
}
6.Методы рисования класса Graphics
oDrawLine(Pen, Point, Point) – рисует линию.
oDrawRectangle(Pen, Rectangle) – рисует контур прямоугольника.
oFillRectangle(Brush, Rectangle) – рисует закрашенный прямоугольник.
oDrawEllipse(Pen, Rectangle) – рисует контур эллипса.
oFillEllipse(Brush, Rectangle) – рисует закрашенный эллипс.
oDrawString(String, Font, Brush, Point) – выводит текст.
oDrawPolygon(Pen, Point[]) – рисует контур многоугольника.
oFillPolygon(Brush, Point[]) – рисует закрашенный многоугольник.
Постановка задачи
Создайте приложение Windows Forms. Используйте конструктор форм для размещения элементов управления. Реализуйте следующий функционал:
1. Разработка интерфейса
С помощью конструктора форм разместите на форме следующие элементы:
Элемент PictureBox – выполняет роль холста для рисования.
Задайте ему свойство BackColor = White и желаемый размер (например, 600 × 400).
Три кнопки с текстами:
«Треугольник», «Квадрат», «Круг».
Три кнопки выбора цвета (по одной для каждой дополнительной фигуры):
«Цвет треугольника», «Цвет квадрата», «Цвет круга».
Кнопку «Очистить» для удаления дополнительных фигур.
2. Реализация основной композиции
Вся логика рисования основной композиции должна быть реализована в обработчике события Paint элемента PictureBox. Основная композиция отображается всегда и состоит из следующих элементов:
Два прямоугольника:
oодин только с контуром (метод DrawRectangle),
oодин закрашенный сплошной кистью (метод FillRectangle).
Одна линия, соединяющая две произвольные точки (метод DrawLine).
Один эллипс, закрашенный штриховой кистью HatchBrush (метод FillEllipse). Цвета штриховки выбрать произвольно.
Текстовая строка с произвольным содержанием, выведенная с использованием заданного шрифта и цвета (метод DrawString).
Примечание: координаты, размеры и цвета фигур (кроме эллипса с штриховкой) студент выбирает самостоятельно. Фигуры не должны накладываться друг на друга и должны быть видны на белом фоне.
3. Реализация дополнительных фигур с выбором цвета
3.1. Хранение данных
Для хранения состояния приложения создайте следующие переменные:
csharp
private string currentShape = ""; // "triangle", "square", "circle"
private Color triangleColor = Color.Green;
private Color squareColor = Color.Orange;
private Color circleColor = Color.Purple;
3.2. Отрисовка дополнительных фигур
В обработчике события Paint элемента PictureBox после отрисовки основной композиции добавьте отрисовку дополнительной фигуры с использованием выбранного цвета:
Треугольник – закрашенный треугольник (метод FillPolygon) с использованием triangleColor.
Квадрат – закрашенный квадрат (метод FillRectangle) с использованием squareColor.
Круг – закрашенный круг (метод FillEllipse) с использованием circleColor.
3.3. Выбор цвета
При нажатии на кнопку «Цвет треугольника» должен открываться диалог выбора цвета (ColorDialog). После выбора цвета переменная triangleColor обновляется, и вызывается перерисовка PictureBox.
Аналогично реализовать для квадрата и круга.
3.4. Отображение фигур
При нажатии на кнопку «Треугольник» устанавливается значение currentShape = "triangle" и вызывается pictureBox1.Invalidate().
Аналогично для кнопок «Квадрат» и «Круг».
3.5. Очистка
При нажатии на кнопку «Очистить» устанавливается currentShape = "" и вызывается pictureBox1.Invalidate().