1

我有一个应用程序,我在图片框上画一条线/正方形。我还需要用户单击图片框上的特定点(在绘制正方形/线之后)以获得第二个点的位置。但是鼠标按下事件不适用于第二次单击。我的代码如图所示:

Dim m_Drawing As Boolean
'm_Drawing = False
Dim m_Startx As Single
Dim m_Starty As Single
Dim m_endx As Single
Dim m_endy As Single
Dim square_click As Boolean
'square_click = False
Dim line_click As Boolean
'line_click = False
Dim bclick As Boolean
'blick = True
Dim startx As Single
Dim starty As Single
Dim endx As Single
Dim endy As Single
Dim laserx_mm As Single
Dim lasery_mm As Single
Dim rectx_mm As Single
Dim recty_mm As Single
Dim xpos As Single
Dim ypos As Single
Dim uxpos As Single
Dim uypos As Single
Dim dist As Single
Dim dist1 As Single

Private Sub Command1_Click()
square_click = True
End Sub

Private Sub Command2_Click()
line_click = True
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim diffx As Single
Dim diffy As Single

Picture1.Cls
If m_Startx = 0 And m_Starty = 0 Then
m_Startx = X
m_Starty = Y
'End If
startx = X
starty = Y
rectx_mm = X
recty_mm = Y
'move to start position
ElseIf m_Startx <> 0 And m_Starty <> 0 Then
laserx_mm = X
lasery_mm = Y

diffx = rectx_mm - laserx_mm
diffy = recty_mm - lasery_mm

dist = xpos + (diffx / 4.74 / 1000)
dist1 = ypos - (diffy / 4.68 / 1000)

End If
End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
endx = X
endy = Y
m_endx = X
m_endy = Y
If square_click = True Then
Picture1.Line (m_Startx, m_Starty)-(endx, endy), vbWhite, B
ElseIf line_click = True Then
Picture1.Line (m_Startx, m_Starty)-(endx, endy), vbWhite
End If
End Sub

编码:ElseIf m_Startx <> 0 And m_Starty <> 0

除非并且直到我在那里设置断点,否则不会被执行。我不确定为什么会这样。请帮帮我!希望我足够清楚!谢谢。

4

1 回答 1

1

Debug.Print "Here I am"在你的内部打了一个电话ElseIf m_Startx <> 0 And m_Starty <> 0......在第二次点击时就像一个魅力。也许您可能想要使用更深的颜色或更粗的线条?白线很难看到。

于 2012-07-12T12:12:18.520 回答