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

Создаем собственные перья. Конструктор


Создаем перо. До этого момента для рисования линий мы пользовались стандартными перьями из класса Pens. Там можно было выбирать цвет пера и больше ничего. Мы же хотим управлять также толщиной, стилем и другими свойствами линий. Для этого существует специальный класс Pen, входящий в пространство имен System.Drawing (не путать с классом Pens). Но пользоваться им напрямую нельзя. Нам нужно сначала создать из класса Pen объекты-перья подобно тому, как из класса Button в 6.1.2 мы создавали объекты-кнопки.

Конструктор. В классах для создания из них экземпляров-объектов существует специальная процедура с именем New. Называется она конструктором. Вы можете объявить и создать объект тремя способами записи. Самый длинный:

Dim Перо As Pen                                        'Объявляем объект

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Перо = New Pen(Color.Red, 20)         'Создаем объект

End Sub

При создании пера при помощи слова New необходимо в скобках указывать параметры. Я выбрал вариант с указанием двух параметров: цвета пера и толщины. В приведенном фрагменте создано красное перо толщины 20.

Откуда мы знаем, какие нужно указывать параметры, и нужно ли их указывать вообще? Об этом вам скажет подсказка по параметрам, которая возникнет, как только вы откроете скобку после слова Pen. Вы выберете вариант по вкусу и укажете параметры.

О процедуре New и вариантах ее параметров вы можете также узнать при помощи клавиши F1 или Object Browser.

Как видите, обращение к конструктору грамматически несколько отличается от общепринятого обращения к процедуре.

В приведенном варианте при запуске проекта объект только объявляется, а создается позже, когда мы нажмем на кнопку. Этот способ хорош тогда, когда вы хотите по ходу работы проекта то создавать, то уничтожать объект.

Вот способ покороче:

Dim Перо As Pen = New Pen(Color.Red, 20)                'Объявляем и создаем объект



Здесь объект и объявляется, и создается одновременно.



Рис. 12.3
Для этого создайте проект с тремя кнопками и меткой и введите следующую программу:
    Dim Граф_формы, Граф_метки As Graphics
    Dim Перо1, Перо2 As Pen
    'Создаем графические объекты и перья:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Граф_формы = Me.CreateGraphics
        Граф_метки = Label1.CreateGraphics
        'Создаем перо 1:
        Перо1 = New Pen(Color.Blue, 10)
        Перо1.DashStyle = Drawing.Drawing2D.DashStyle.Dash
        'Создаем перо 2:
        Перо2 = New Pen(Color.Red, 20)
        Перо2.StartCap = Drawing.Drawing2D.LineCap.RoundAnchor
        Перо2.EndCap = Drawing.Drawing2D.LineCap.ArrowAnchor
    End Sub
    'Рисуем пером 1:
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Граф_формы.DrawEllipse(Перо1, 100, 50, 200, 100)           'Рисуем пером 1 эллипс на форме
        Граф_метки.DrawPie(Перо1, 10, 10, 150, 150, 0, 270)        'Рисуем пером 1 сектор на метке
    End Sub
    'Рисуем пером 2:
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Граф_формы.DrawLine(Перо2, 50, 50, 330, 150)              'Рисуем пером 2 стрелку на форме
        Граф_метки.DrawRectangle(Перо2, 50, 50, 70, 100)         'Рисуем пером 2 прямоугольник на метке
    End Sub
Пояснения. Здесь мы объявили оба пера вне процедур, чтобы ими можно было пользоваться из каждой процедуры.
При создании пера 1 мы задали его свойство DashStyle (стиль штриховки). Как только в окне кода в операторе
        Перо1.DashStyle = Drawing.Drawing2D.DashStyle.Dash
вы введете с клавиатуры знак равенства, перед вами развернется список возможных стилей штриховки (Рис. 12.4), из которых вы можете выбирать.

Рис. 12.4
Вот их узоры:

Custom
Определяется программистом
Dash
- - - - - - - -
DashDot
- . - . - . - .
DashDotDot
- . . - . . - . . - . .
Dot
. . . . . . . .
Solid
________
<


Каждый из стилей является одним из 6 значений перечисления DashStyle, входящего в пространство имен Drawing.Drawing2D. Мы выбрали штриховку Dash и таким штрихованным пером начертили эллипс и сектор.
При создании пера 2 мы задали его свойства StartCap («Колпак» на начало линии) и EndCap («Колпак» на конец линии). Процесс их выбора аналогичен процессу выбора свойства DashStyle. В качестве колпаков может выступить стрелка (ArrowAnchor), кружок (RoundAnchor) и ряд других фигур и очертаний. Эти фигуры и очертания являются значениями перечисления LineCap, входящего в пространство имен Drawing.Drawing2D. Пером 2 мы начертили стрелку и прямоугольник. Обратите внимание, что прямоугольник получился без «колпаков». Наверное потому, что у линии прямоугольника нет ни начала, ни конца.
У пера есть и другие любопытные свойства, но объем книги не позволяет мне на них останавливаться. Если вам интересно, найдите в Object Browser список свойств класса Pen. Выделите интересующее вас свойство и нажмите клавишу F1. Если вы знаете английский, то попробуйте разобраться в возникшем окне помощи. Правда, разобраться как следует даже при знании английского начинающему будет трудновато.

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