Сохраните текущее состояние проекта. Создайте в том же решении новый проект, назовите его Ex5. Назначьте его запускаемым проектом.
Измените свойство Text формы на «Отрезки».
Графические операции выполняются с использованием класса Graphics. Класс Graphics предоставляет возможности для рисования (перо, кисть, шрифт, набор типовых геометрических фигур).
Чтобы создать экземпляр класса Graphics, нужно описать переменную:
Graphics Graph;
а затем инициализировать её:
Graph = CreateGraphics();
После этого можно использовать возможности класса Graphics.
Например, чтобы нарисовать на форме пунктирную линию красного цвета от точки с координатами (25, 25) до точки (250, 250), необходимы следующие операторы:
Pen MyPen = new Pen(Color.Red, 2);
float[] dashValues = {5, 4};
MyPen.DashPattern = dashValues;
Graph.DrawLine(MyPen, 25, 25, 250, 250);
MyPen.Dispose();
Graph.Dispose();
Поясним код. Первый оператор создает экземпляр класса Pen – перо. Указанные в скобках параметры определяют цвет пера и его толщину. Если второй параметр не указывать явно, по умолчанию он будет равен 1. Мы определили перо с именем MyPen, красного цвета, толщиной 2 пикселя.
|
|
Второй и третий операторы отвечают за пунктирный стиль кисти. Массив dashValues указывает, что пунктир будет таким: линия длиной
5 пикселей, пропуск между пикселями длиной 4 пикселя. Третий оператор устанавливает пунктирный стиль в соответствии с созданным массивом dashValues.
В четвертой строке кода используется метод DrawLine () – рисование отрезка. Его пять параметров определяют используемое для рисования перо и координаты начала и конца отрезка соответственно.
Метод Dispose () освобождает все ресурсы, используемые объектом.
По условию задачи нам нужно рисовать отрезки. Отрезок – это часть прямой, расположенная между двумя точками. Пусть событие нажатие кнопки мыши послужит началом рисования отрезка (сохраним координаты этой точки), освобождение кнопки мыши – завершением рисования отрезка (нарисуем линию от сохраненной точки до точки, на которую указывает курсор).
Необходимо описать переменные Graph (тип Graphics), MyPen (тип Pen), x и y (тип int – целые числа). Если сделать это непосредственно в обработчике MouseDown, то эти переменные будут недоступны в обработчике MouseUp. Поэтому опишем все переменные в классе Form1.
public partial class Form1: Form
{
int x, y;
Graphics Graph;
Pen MyPen;
…
В конструкторе формы допишите следующие операторы:
Graph = CreateGraphics();
MyPen = new Pen(Color.Blue);
Создайте обработчик события MouseDown:
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
x = e.X;
y = e.Y;
}
Создайте обработчик события MouseUp:
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
Graph.DrawLine(MyPen, x, y, e.X, e.Y);
}
Создайте обработчик события FormClosing (происходит при закрытии формы; здесь удобно освобождать занятые ресурсы):
private void Form1_FormClosing
(object sender, FormClosingEventArgs e)
{
MyPen.Dispose();
Graph.Dispose();
}
Запустите приложение. Попробуйте с помощью приложения нарисовать звезду.
Упражнение 3.6. Создайте приложение, позволяющее изображать произвольные линии.