Решение. Создайте новый проект в том же решении, назовите его 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. Напишите приложение, которое позволяет рисовать ломаные линии.




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