Лекция: Dim intPrevX As Integer Dim intPrevY As Integer

 

Теперь перепишем процедуру обработки события MouseMove и добавим обработку события MouseDown.

Dim intPrevX As Integer
Dim intPrevY As Integer

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
intPrevX = X
intPrevY = Y
End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then frmPaint.Line (intPrevX, intPrevY)-(X, Y)
intPrevX = X
intPrevY = Y

End Sub

Готово! Запускаем приложение и радуемся результату.

 

Радуемся, радуемся, но если приложение свернуть и обратно развернуть (или на время закрыть другим окном) изображение исчезнет. Избавиться от этой неприятности просто: установите свойство формы AutoRedraw равным true и окно будет перерисовываться автоматически.

 

Теперь, на закуску, создадим цветной рисунок.

По умолчанию будем использовать черный цвет. Другие цвета можно будет включит нажав на определенную клавишу на клавиатуре, вернутся к черному цвету нажав на любую другую клавишу.

Текущий цвет будем хранить в переменной Color типа Long (Длинное целое число от 32147483648 до +2147483647). Значение переменной можно задать различными способами:

  • присвоив какое-то числовое значение (Color = 12345; Color = &H80000018);
  • с помощью констант (Color = vbBlack);
  • с помощью функции QBColor() (Color = QBColor(3));
  • С помощью функции RGB() (Color = RGB(255,255,255)).

Дополним уже имеющийся код:

Dim intPrevX As Integer
Dim intPrevY As Integer
Dim Color As Long

Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case Chr$(KeyAscii)
Case «1»
Color = RGB(255, 0, 0)
Case «2»
Color = RGB(0, 255, 0)
Case «3»
Color = RGB(0, 0, 255)
Case Else
Color = RGB(0, 0, 0)
End Select
lColor = RGB(0, 0, 0)
End Sub

Private Sub Form_Load()
Color = RGB(0, 0, 0)
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
intPrevX = X
intPrevY = Y
End If
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Print lColor
If Button = 1 Then frmPaint.Line (intPrevX, intPrevY)-(X, Y), Color
intPrevX = X
intPrevY = Y
End Sub

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

Готово!

еще рефераты
Еще работы по информатике