Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования стр.54
Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования стр.54

Dim a As Integer Dim b As Integer Dim с As Integer Dim d As Integer

Private Sub Forml_MouseDown(ByVal sender As Object, ByVal e _

As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown

If e.Button = MouseButtons.Left Then

a = e.X

b = e.Y

End If

End Sub

Private Sub Forml_MouseUp(ByVal sender As Object, ByVal e _ As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp Dim graf As Graphics = CreateGraphics() If e.Button = MouseButtons.Left Then с = e.X d = e.Y

graf.DrawLine(New Pen(Color.Blue, 3), a, b, c, d) End If End Sub

Недостаток этой программы состоит в том, что во время ее работы сам процесс рисования увидеть невозможно. Рисунок появляется после выполнения последнего действия -отпуска клавиши. Поэтому рассмотрим еще несколько примеров, в которых покажем, как геометрическая фигура создается одновременно с движением мыши.

Следующая программа выводит на форме линию, которая точно повторяет траекторию движения указателя мыши. Создавая код, приведенный ниже, мы объявляем переменные видимые в модуле, затем, используя событие MouseDown, определяем начальные координаты указателя мыши, и, наконец, с помощью события MouseMove задаем координаты следующих точек линии и рисуем ее методом DrawLine.

Dim i As Boolean Dim xl As Integer

Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования

MouseDown

Dim yl As Integer Dim x2 As Integer Dim у2 As Integer

Private Sub Forml_MouseDown(ByVal sender As Object, ByVal e _ As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown If e.Button = MouseButtons.Left Then xl = e.X yl = e.Y i = True End If End Sub

Private Sub Forml_MouseMove(ByVal sender As Object, ByVal e _ As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove Dim graf As Graphics = MyClass.CreateGraphics If i = True Then x2 = e.X y2 = e.Y

graf.DrawLine(New Pen(Color.Brown, 3), xl, yl, x2, y2) xl = x2 Yl = У2 End If End Sub

Private Sub Forml_MouseUp(ByVal sender As Object, ByVal e _ As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp i = False End Sub

Недостаток этого способа заключается в том, что линия в точности повторяет траекторию движения мыши. А нарисовать мышью что-либо стоящее весьма непросто. В этом легко убедится, взглянув на рис. 8.1.


⇐ Предыдущая Следующая ⇒
 
 
 
Powered by Exponenta