Решение. Создайте новый проект в том же решении, назовите его Ex7, установите в свойстве решения, чтобы запускался Ex7

Создайте новый проект в том же решении, назовите его Ex7, установите в свойстве решения, чтобы запускался Ex7. Измените свойство Text формы на «Прямоугольники».

В классе Graphics определен метод DrawRectangle(Pen, x, y, w, h), в котором параметры задают перо, координаты верхнего левого угла прямоугольника, а также его ширину и высоту соответственно. Если при рисовании всегда сначала нажимать кнопку мыши в верхнем левом углу прямоугольника и вести мышку к правому нижнему углу прямоугольника, то рисование прямоугольника запрограммировать достаточно просто, поскольку тогда координаты x и y будут известны (первый щелчок мыши), а w и h вычисляются как разница между соответствующими вторыми и первыми координатами. Однако при рисовании пользователь может двигать мышью по‑раз­ному, не всегда начиная с верхнего левого угла.

Опишите в классе формы целые x и y, Graph (тип GraphicsMyPen (тип Pen). В конструкторе формы задайте значение Graph и MyPen. В событии FormClosing освободите ресурсы, занимаемые Graph и MyPen. Нажатие кнопки мыши (событие MouseDown) определяет координаты первой точки, а освобождение кнопки (событие MouseUp) – само рисования прямоугольника. Создайте обработчики этих событий MouseDown и MouseUp. Введите следующий код:

private void Form1_MouseDown(object sender, MouseEventArgs e)

{

x = e.X;

y = e.Y;

}

private void Form1_MouseUp(object sender, MouseEventArgs e)

{

int w = Math.Abs(e.X - x);

int h = Math.Abs(y - e.Y);

x = Math.Min(e.X, x);

y = Math.Min(e.Y, y);

Graph.DrawRectangle(MyPen, x, y, w, h);

}

Здесь используется класс Math, предоставляющий математические свойства и методы. В частности, мы используем методы Abs () – модуль, Min () – минимум. С помощью этого мы определяем ширину и высоту прямоугольника и координаты верхнего левого угла. При изменении значений переменных x и y определяются координаты верхнего левого угла прямоугольника.

Убедитесь в правильности работы программы.

Если метод DrawRectangle () поменять на DrawEllipse (), то вместо прямоугольников будут рисоваться эллипсы.

Упражнение 3.8. Напишите приложение, которое позволяет рисовать ломаные линии.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: