Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Построение изображений указателем мыши в Microsoft Visual Basic






 

Приведём пример, в котором демонстрируется рисование указателем мыши на форме, то есть задача состоит в том, чтобы написать программу, позволяющую при нажатой левой или правой кнопке мыши рисовать в форме. Если пользователь отпустит кнопку мыши, то рисование прекращается. В проектируемой форме следует предусмотреть кнопку «Стереть », предназначенную для очистки формы.

Вначале необходимо создать форму с командной кнопкой, как мы это делали прежде. Для этого запускаем Visual Basic и в окне Создать проект выбираем шаблон Приложение Windows Form для Visual Basic. Для того чтобы создать кнопку Button, делаем следующее: Вид – Панель элементов – Button(перетащил на форму). Далее переходим в программный код и введем соответствующий текст, представленный ниже:

Public Class Form1

Dim Рисовать_ли As Boolean

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Me.Text = " Рисую мышью в форме"

Button1.Text = " Стереть"

Рисовать_ли = False ' в начале - не рисовать

End Sub

Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown

' Если нажата кнопка мыши - MouseDown, то рисовать

Рисовать_ли = True

End Sub

Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles MyBase.MouseUp

' Если кнопку мыши отпустили, то НЕ рисовать

Рисовать_ли = False

End Sub

Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove

' Рисование прямоугольника, если нажата кнопка мыши

If Рисовать_ли = True Then

' Рисовать прямоугольник в точке (e.X, e.Y)

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

Графика.FillRectangle(New SolidBrush(Color.Red), e.X, e.Y, 10, 10)

' 10x10 пикселов - размер сплошного прямоугольника

' e.X, e.Y - координаты указателя мыши

Графика.Dispose() ' Эквивалент C++: delete Графика

End If

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

В начале программы объявляем переменную Рисовать_ли логического типа (Boolean) со значением False. Эта переменная либо позволяет (Рисовать_ли = True) рисовать в форме при перемещении мыши (событие MouseMove), либо не разрешает делать это (Рисовать_ли = False). Область действия переменной Рисовать_ли – весь класс Form1, т.е. изменить или выяснить ее значение можно в любой процедуре этого класса [9, с.130].

Значение переменной Рисовать_ли может изменить либо событие MouseUp (кнопку мыши отпустили, рисовать нельзя, Рисовать_ли = False), либо событие MouseDown (кнопку мыши нажали, рисовать можно, Рисовать_ли = True). При перемещении мыши с нажатой кнопкой программа создает графический объект Graphics пространства имен System.Drawing, используя метод Create Graphics(), и рисует прямоугольник FillRectangle() размером 10X10 пикселов, заполненный красным цветом. e.X, e.Y – координаты указателя мыши, которые также являются координатами левого верхнего угла прямоугольника.

На рисунке 12 Приведен пример рисования в форме. Чтобы стереть все нарисованное в форме, следует нажать кнопку «Стереть». При этом вызывается метод Refresh(), предназначенный для перерисовывания формы.

 

Рисунок 12 – Окно рисования указателем мыши в форме

 

В комментариях приведены варианты реализации очистки формы от всего нарисованного на ней пользователем. Например, путем создания графического объекта Create Graphics() и закрашивание формы в ее первоначальный цвет KnownColor. Control [9, с.135].

Можно заметить, что можно было бы очистить область рисования более короткой командой Clear (Color.White), т.е. закрасить форму белым цветом (White), либо выбрать другой цвет из списка 146 цветов после ввода оператора “точка” (.) за словом Color. Однако ни один из 146 цветов не является первоначальным цветом формы (BackColor). Поэтому задаем этот цвет через другие константы цвета, представленные в перечислении Color.FromKnownColor. Также можно задать цвет как Color.FromName (“Control”). Можно использовать функцию перевода 16-ричного кода цвета ColorTranslator.FromHtml(). Оба эти варианта также представлены в комментарии. Цвет #FOFOFO является 16-ричным представлением нужного мне цвета.

Очистить форму от всего нарисованного на ней можно нажав на кнопку в форме «Стереть». Рисовать в форме можно как левой, так и правой кнопками мыши[9, с.130].


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал