Построение изображений с использованием графических примитивов - Программирование графики в Microsoft Visual Basic

В векторных чертежах Графическим примитивом называют элементарные составляющие чертежа: отрезок, дуга, символ, окружность и др. Здесь имеем дело с растровой графикой, но в данном случае подход тот же - по координатам рисуем те же фигуры. Система координат такая: начало координат - это левый верхний угол формы, ось Ox направлена вправо, а Oy - вниз. Задача состоит в том, чтобы рисовать в форме: окружность, отрезок, прямоугольник, сектор, текст, эллипс и закрашенный сектор. Выбор того или иного графического примитива осуществить через элемент управления ListBox. Для решения этой задачи создаем форму и перетаскиваем в нее из Панеля элементов элемент управления ListBox. Далее - двойной щелчок в пределах формы, где в пустом обработчике события Form1_Load создаем список графических примитивов, заполняя коллекцию (Items) элементов списка ListBox1 [9, с.118]..

Далее переходим в программный код и вводим соответствующий текст, представленный ниже:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System. Object,

ByVal e As System. EventArgs) Handles MyBase. Load

ListBox1.Items. AddRange(New Object() {"Окружность", "Отрезок",

"Прямоугольник", "Сектор", "Текст",

"Эллипс", "Закрашенный сектор"})

' Font = New Font("Times New Roman", 14)

Me. Text = "Выбери графический примитив"

End Sub

Private Sub ListBox1_Click(ByVal sender As Object,

ByVal e As System. EventArgs) Handles ListBox1.Click

' Создание графического объекта

Dim graph As Graphics = MyBase. CreateGraphics

' Создание пера для рисования им фигур

Dim pen1 As New Pen(Color. Red)

' Создание кисти для "закрашивания" фигур

Dim brush1 As New SolidBrush(Color. Red)

' Очистка области рисунка путем ее окрашивания в

' первоначальный цвет формы graph. Clear(Color. FromName("Control"))

' graph. Clear(ColorTranslator. FromHtml("#EFEBDE"))

Select Case ListBox1.SelectedIndex

Case 0 ' -- выбрана окружность:

Graph. DrawEllipse(pen1, 50, 50, 150, 150)

Case 1 ' -- выбран отрезок:

Graph. DrawLine(pen1, 50, 50, 200, 200)

Case 2 ' -- выбран прямоугольник:

Graph. DrawRectangle(pen1, 50, 30, 150, 180)

Case 3 ' -- выбран сектор:

Graph. DrawPie(pen1, 40, 50, 200, 200, 180, 225)

Case 4 ' -- выбран текст:

Dim s As String

S = "Каждый во что-то верит, но" &;

VbCrLf &; " жизнь преподносит сюрпризы."

Graph. DrawString(s, Font, brush1, 10, 100)

Case 5 ' -- выбран эллипс:

Graph. DrawEllipse(pen1, 30, 30, 150, 200)

Case 6 ' -- выбран закрашенный сектор:

Graph. FillPie(brush1, 20, 50, 150, 150, 0, 45)

End Select

End Sub

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

' Методы очистки формы:

Dim Графика = CreateGraphics()

Графика. Clear(Me. BackColor)

' Графика. Clear(SystemColors. Control1)

' Графика. Clear(Color. FromName("Control"))

' Графика. Clear(Color. FromKnownColor(KnownColor. Control))

' Графика. Clear(ColorTranslator. FromHtml("#FOFOFO"))

' Me. Refresh() ' Этот метод также перерисовывает форму

End Sub

End Class

В программе, обрабатывая событие Click по выбранному элементу списка, создаю: графический объект graph, перо pen1 для рисования им фигур, кисть brush1 для "закрашивания" ею фигур. Далее очищаем область рисования путем окрашивания формы в первоначальный цвет "Control" или #EFEBDE (как записано в комментарии), используя метод Clear() объекта graph: graph. Clear(Color. FromName("Control")) Процедура окрашивания формы в какой-либо цвет выглядела бы менее громоздко, если бы использоваи какую-либо константу, означающую цвет, например, White или любую другую из списка 146 констант цвета. Тогда бы написали:

Graph. Clear(Color. White) В таком случае пришлось бы при инициализации переменных при загрузке формы задать другой цвет формы:

Me. BackColor = System. Drawing. Color. White Однако хотелось бы, чтобы цвет формы оставался первоначальным - "Control". Кстати, этот цвет можно назвать цветом Microsoft: это цвет Windows Explorer, Internet Explorer и пр. После очистки формы, используя свойство SelectIndex, которое указывает на номер выбранного пользователем элемента списка (от 0 до 6), рисуем выбранную фигуру. На рисунке 13 представлен фрагмент работы программы [9, с.124].

Рис.13 - Окно рисования графического примитива на форме

Похожие статьи




Построение изображений с использованием графических примитивов - Программирование графики в Microsoft Visual Basic

Предыдущая | Следующая