![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Построение изображений с использованием графических примитивов
В векторных чертежах графическим примитивом называют элементарные составляющие чертежа: отрезок, дуга, символ, окружность и др. Здесь имеем дело с растровой графикой, но в данном случае подход тот же – по координатам рисуем те же фигуры. Система координат такая: начало координат – это левый верхний угол формы, ось 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 – Окно рисования графического примитива на форме
|