ПОНЯТНО О Visual Basic NET (том 2)

Использование Точки и Прямоугольника в графических методах


Просмотрите еще раз варианты графических методов для рисования. Вы найдете много таких, в которых параметры обязаны иметь типы 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.          
Меняя вместе с диаметром еще и вертикальную координату, вы получите «коническую башню».

Содержание раздела