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

Создаем перо. До этого момента для рисования линий мы пользовались стандартными перьями из класса 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) 'Объявляем и создаем объект

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

А вот самый короткий способ:

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

Он эквивалентен предыдущему. Выбирайте по вкусу.

Обычно класс содержит большое число вариантов конструктора. Впредь я буду объяснять только те из них, которые наиболее просто достигают нужных целей. При этом большое количество любопытных и приятных, но реже используемых вариантов останется вне рассмотрения. В большинстве случаев начинающему их и знать не нужно, но если вы заинтересуетесь, то разобраться в них вам поможет не только подсказка по параметрам, но и система помощи. Поставьте текстовый курсор на название класса в программном тексте и нажмите F1. Перед вами возникнет окно помощи, в большинстве случаев перечисляющее компоненты класса. Самой верхней в списке обычно приводится ссылка на конструктор (Constructor). Щелкните по ней и перед вами возникнет новое окно помощи, перечисляющее все варианты конструктора.

Используем перо. Как только перо создано, им можно свободно пользоваться в методах графических объектов везде, где требуются перья. Вот программа, в которой я пользуюсь двумя перьями: стандартным и собственным:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Граф As Graphics = Me.CreateGraphics

Dim Перо As Pen = New Pen(Color.Red, 20)

Граф.DrawEllipse(Pens.Black, 10, 20, 100, 50) 'Левый эллипс

Граф.DrawEllipse(Перо, 150, 20, 100, 50) 'Правый эллипс

End Sub

Программа рисует два эллипса (см. Рис. 12.2).

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

Рис. 12.2

Левый эллипс рисуется стандартным пером Pens.Black (тонким и черным), а правый – созданным нами пером Перо (толстым и красным).

Создав однажды Перо, вы затем свободно можете менять его свойства, например цвет, задавая его свойство Color, и ширину, задавая его свойство Width:

Перо.Color = Color.Violet

Перо.Width = 40

Свойства перьев. У объекта-пера класса Pen есть много свойств, определяющих внешний вид линии. Попробуем управлять некоторыми из них и начертить, например, такие линии (см. Рис. 12.3).

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

Рис. 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), из которых вы можете выбирать.

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

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

Наши рекомендации