Использование Точки и Прямоугольника в графических методах
Просмотрите еще раз варианты графических методов для рисования. Вы найдете много таких, в которых параметры обязаны иметь типы Point, PointF, Rectangle, RectangleF.
Вот пример рисования линии, прямоугольника и эллипса вариантами графических методов с использованием Точек и Прямоугольников:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Гр As Graphics = Me.CreateGraphics
'Объявляем точки и прямоугольники:
Dim Т1, Т2 As Point
Dim П1, П2 As Rectangle
'Задаем координаты и размеры:
Т1.X = 50 : Т1.Y = 20
Т2.X = 200 : Т2.Y = 80
П1.X = 120 : П1.Y = 100 : П1.Width = 150 : П1.Height = 30
П2.X = 220 : П2.Y = 200 : П2.Width = 180 : П2.Height = 40
'Рисуем с использованием Точек и Прямоугольников:
Гр.DrawLine(Pens.Black, Т1, Т2)
Гр.DrawRectangle(Pens.Black, П1)
Гр.DrawEllipse(Pens.Black, П2)
End Sub
Пояснения: Как видите, заранее необходимо создать все нужные Точки и Прямоугольники и придать им нужные вам координаты и размеры, а затем уже можно рисовать с использованием подходящих вариантов графических методов. Здесь в методе DrawLine Точки Т1 и Т2 – начальная и конечная точки отрезка. Метод DrawRectangle рисует Прямоугольник П1. А метод DrawEllipse рисует эллипс, вписанный в Прямоугольник П2.
Inflate. Познакомимся с методом Прямоугольника Inflate. Этот метод расширяет (сужает) Прямоугольник во все стороны на заданные размеры. Так, оператор
П1.Inflate(-20, 10)
сузит Прямоугольник П1 на 20 пикселей в обе стороны по горизонтали и расширит на 10 пикселей в обе стороны по вертикали.
Разберитесь в программе:
Dim Гр As Graphics
Dim П1, П2 As Rectangle
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Гр = Me.CreateGraphics
П1.X = 200 : П1.Y = 150 : П1.Width = 150 : П1.Height = 30
П2.X = 550 : П2.Y = 150 : П2.Width = 200 : П2.Height = 10
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
П1.Inflate(30, 10) 'Изменяем размеры Прямоугольника в памяти
Гр.DrawRectangle(Pens.Black, П1) 'Рисуем измененный Прямоугольник
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
П2.Inflate(-10, 10) 'Изменяем размеры Прямоугольника в памяти
Гр.DrawRectangle(Pens.Black, П2) 'Рисуем измененный Прямоугольник
End Sub
Пояснения: Оператор П1.Inflate(30, 10) расширяет Прямоугольник П1 на 30 пикселей в обе стороны по горизонтали и на 10 пикселей в обе стороны по вертикали. Оператор П2.Inflate(-10, 10) сужает Прямоугольник П2 на 10 пикселей в обе стороны по горизонтали и расширяет на 10 пикселей в обе стороны по вертикали.
В результате нескольких нажатий на кнопку Button1 вы увидите фигуру в левой части Рис. 12.1, а в результате нескольких нажатий на кнопку Button2 – в правой.
Рис. 12.1
Задание 66.
«Круги на воде или радиоволны». Нарисуйте в цикле десяток концентрических окружностей, то есть окружностей разного радиуса, но имеющих общий центр.
Задание 67.
«Компакт-диск» и «Летающая тарелка». Если диаметр самого маленького «круга на воде» будет порядка 100, а самого большого – во весь экран, и если диаметры соседних окружностей будут различаться на 2-4 пикселя, то на экране вы увидите привлекательный «компакт-диск». Сделайте его белым или золотым на черном фоне. Если получилось, то сделайте ему внутренний и наружный ободки другого цвета. А теперь «положите» диск, то есть нарисуйте его не из окружностей, а из эллипсов, сжатых по вертикали. Получится «летающая тарелка».
Задание 68.
Меняя вместе с диаметром еще и вертикальную координату, вы получите «коническую башню».