Вы находитесь на странице: 1из 3

Тема: Графика

На чем мы можем рисовать в VB? На форме, на кнопке, на текстовом поле, на графическом поле
PictureBox, на других элементах управления. Но ведь в коде классов формы и элементов управления нет
программ рисования. Вы можете убедиться в этом, поставив точку после слова Button1 и просмотрев
открывшийся список. Вы не найдете там ничего, что позволяет рисовать. Для обеспечения рисования в VB
имеется специальный класс Graphics, расположенный в пространстве имен System.Drawing. Его код и
содержит программы для рисования фигур и для другой работы с графической информацией.
Зайдите в Object Browser (см. Error: Reference source not found) и найдите класс Graphics. Щелкните по
нему – в правой панели вы увидите свойства и методы этого класса. Среди них много методов рисования
фигур – хотя бы все те, что начинаются на Draw. Прекрасно. Однако, если вы в окне кода напишете слово
Graphics и поставите точку, то в открывшемся списке вы этих методов не увидите. Значит, так просто их
применять нельзя.
Все богатство возможностей класса рисования Graphics нам станет доступно лишь тогда, когда мы из
этого класса создадим объект. Объект, как вы знаете, это «копия», экземпляр класса, обладающий всеми
нужными его возможностями. Объект этот невидимый, но нам это безразлично, так как все равно рисовать он
будет не «на себе», а на форме или элементе управления.
Существует еще такое требование: форме и каждому элементу управления – свой объект класса
Graphics. Это значит, что если мы собираемся рисовать на форме, двух кнопках и на метке, то нам придется
создавать 4 объекта класса Graphics. Сделано это потому, что одному объекту рисовать сразу на нескольких
разных предметах трудновато, а удобнее настроиться на какой-то один.

1.1.1. Первая нарисованная линия


Задача: Нарисовать на форме отрезок прямой линии синего цвета между двумя точками. Координаты на
форме первой точки: x=50, y=20. Координаты второй точки: x=200, y=100.
Создайте проект. Вспомните систему координат (Error: Reference source not found). Прикиньте глазами,
где примерно должен проходить отрезок. Разместите на форме кнопку, при щелчке по которой будет
нарисован отрезок.
Начинаем с того, что объявляем объект класса Graphics:
Dim Графика_для_формы As Graphics
Теперь нужно этот объект создать. Пока мы знаем, что объекты создаются при помощи слова New.
Однако для объектов класса Graphics мы воспользуемся другим способом. У формы и элементов управления
есть специальный метод CreateGraphics, при помощи которого каждый элемент управления или форма
создает свой собственный, персональный объект класса Graphics.
Графика_для_формы = Me.CreateGraphics
Объект создан. Поскольку он создан методом CreateGraphics, принадлежащим форме, то он сможет
рисовать только на ней.
Теперь можно рисовать. Для этого воспользуемся методом DrawLine объекта Графика_для_формы:
Графика_для_формы.DrawLine(Pens.Blue, 50, 20, 200, 100)
Четыре числа в качестве аргументов метода DrawLine – не что иное, как координаты двух точек, между
которыми проводится отрезок. А вот про аргумент Pens.Blue поговорим подробнее. Он определяет цвет
линии. Blue – это синий цвет. А при чем тут Pens? Поясняю.
Мы уже привыкли, что VB ведет себя словно старый бюрократ. Помните – когда мы хотели кнопку
сделать красной, он заставлял вместо Red писать Color.Red (см. Error: Reference source not found)? Это
означает, что цвет Red принадлежит в качестве свойства структуре Color. Употребляя аналогию, можно
сказать: краски для того, чтобы покрасить форму или элемент управления, мы должны брать из «коробки для
красок», которую зовут Color.
Линии фигур VB чертит пером. Существует специальный класс Pens («Перья»), содержащий несколько
десятков перьев различных цветов. Запись Pens.Blue как раз и означает взятое из этой «коробки для перьев»
перо синего цвета. Попробуйте в качестве первого аргумента метода DrawLine указать не Pens.Blue, а
Color.Blue – у вас ничего не получится: цвета одинаковые, да «коробки» разные.
В дальнейшем я более солидно обосную, где и какие выражения можно или нельзя писать. Вот текст
процедуры целиком:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Графика_для_формы As Graphics
Графика_для_формы = Me.CreateGraphics
Графика_для_формы.DrawLine(Pens.Blue, 50, 20, 200, 100)
End Sub
Запустите проект, нажмите кнопку. Вот что вы увидите (Рис. 6 .1).
Рис. 6.1

Слева сверху первая крайняя точка отрезка, справа снизу – вторая.

1.1.2. Рисуем отрезки, прямоугольники, круги, эллипсы


Поставим задачу нарисовать на форме 7 фигур, как изображено на Рис. 6 .2. Числа на рисунке
обозначают горизонтальную и вертикальную координаты на форме.
0 100 200 300 400 500 600

100

200

300

400

Рис. 6.2

Оба отрезка прямых будем рисовать методом DrawLine.


Прямоугольник и квадрат будем рисовать методом DrawRectangle.
Окружность и эллипсы (сплющенные окружности) будем рисовать методом DrawEllipse.
Вот программа, решающая задачу:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Граф As Graphics = Me.CreateGraphics
'Левый отрезок: 0, 400 - координаты одной из точек отрезка, 300, 0 – другой:
Граф.DrawLine(Pens.Black, 0, 400, 300, 0)
'Правый отрезок:
Граф.DrawLine(Pens.Black, 400, 300, 600, 400)
'Прямоугольник: '400, 300 - координаты левого верхнего угла прям-ка, 200 - ширина пр-ка, 100 - высота
Граф.DrawRectangle(Pens.Black, 400, 300, 200, 100)
'Эллипс, вписанный в этот прямоугольник - параметры те же, что и у прямоугольника:
Граф.DrawEllipse(Pens.Black, 400, 300, 200, 100)
Граф.DrawRectangle(Pens.Black, 200, 300, 100, 100) 'Квалрат
Граф.DrawEllipse(Pens.Black, 400, 0, 200, 200) 'Круг
Граф.DrawEllipse(Pens.Black, 0, 0, 200, 400) 'Высокий эллипс
End Sub
Не забывайте, что после ввода каждого очередного оператора проект нужно запускать и проверять, как
он работает.
Пояснения:
Внутри процедуры для рождения объекта класса Graphics достаточно вместо двух операторов
Dim Граф As Graphics
Граф = Me.CreateGraphics
написать один
Dim Граф As Graphics = Me.CreateGraphics
Примечание. В дальнейших примерах я для краткости часто буду опускать операторы, порождающие
объект Граф, поэтому, столкнувшись невзначай с именем Граф, знайте, что это всего лишь объект класса
Graphics.
Будем называть величины, указанные в скобках за именем метода, параметрами метода. Сравните их с
координатами и размерами фигур на рисунке, а также прочитайте комментарии к коду и дальнейшие
пояснения.
Отрезки прямых рисуются методом DrawLine. Мы знаем, что отрезок прямой можно построить, если
известно положение двух его крайних точек. Они-то и задаются в обращении к методу. Первая пара
параметров вслед за указанием пера – координаты одной точки (любой из двух), вторая пара – другой.
Первое число в каждой паре - горизонтальная координата, второе число - вертикальная.
Прямоугольники рисуются методом DrawRectangle. Прямоугольник можно построить, если известно
положение его верхнего левого угла, ширина и высота. Четыре параметра в скобках вслед за указанием пера
как раз и определяют эти величины.
Квадрат, как известно, тоже прямоугольник, поэтому чертится тем же методом.
Эллипсы рисуются методом DrawEllipse. Вокруг каждого эллипса можно описать прямоугольник. В
правой нижней части рисунка вы как раз и видите эллипс с описанным вокруг него прямоугольником. Если вы
хотите начертить эллипс, вообразите прямоугольник, описанный вокруг него, и параметрами для метода
DrawEllipse укажите параметры для рисования этого воображаемого прямоугольника.
Круг – это эллипс, у которого одинаковы ширина и высота, поэтому чертится тем же методом.
Координаты в методах могут быть и отрицательными. В результате вся фигура или ее часть оказывается
левей или выше формы и поэтому не видна. Координаты в методах могут быть и слишком большими
положительными. В результате вся фигура или ее часть оказывается правей или ниже формы и поэтому не
видна.

Вам также может понравиться