通过鼠标在两个图片框之间画线
我现在做一个电路模拟软件,现在在电器元件的两旁分别设置一个图片框,上面就画了一个小圆点(半径70twip)。现在想要实现:
当用户在其中一个图片框上按下鼠标并开始拖到另一个图片框上松开鼠标时,就把这两个图片框用线连接起来,最后看用户的连接是否正确。
对于在一个窗体上按下鼠标开始画线,直到松开鼠标,可以实现。但是下面的代码就不能画,原因是什么?该怎么修改?
其中picCir是图片框数组,beginL是表示开始画线的逻辑变量。
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If beginL = True Then
DrawWidth = 2
Form1.Line (CurrentX, CurrentY)-(X, Y), vbBlack
End If
End Sub
Private Sub picCir_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
beginL = True
Form1.CurrentX = picCir(Index).Left
Form1.CurrentY = picCir(Index).Top
End If
End Sub
Private Sub picCir_MouseUp(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
beginL = False
End If
End Sub
[解决办法]
当然不行,鼠标按下后,直到松开,这段时间里没有发生焦点转移,也就是当鼠标松开时,接收鼠标up事件的依然是你按下时的那个控件。
你可以考虑在按下的那个控件里写up事件处理程序,但是取得的x,y需要换算
[解决办法]
index不同
而且你也想得到嘛,根本就是两个控件,怎么可能是一样的?两个人都叫张三,身份证号码不同,你觉得那是同一个人吗?windows事件的传递,不是根据名字来的,名字只不过是编程时方便记忆的符号,两个对象就有两个对象的id,虽然看上去名字相同,不过是vb做了处理,其实是不同的。