下面的代码,能实现,但效果非常糟糕,不能在实际中运用
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MSsign = True
End SubPrivate Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MSsign Then
Image1.Move X, Y
End If
End SubPrivate Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MSsign = False
End Sub
在拖动的过程中,会发生闪动,如何消除,或者使用其它方法实现?
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MSsign = True
End SubPrivate Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MSsign Then
Image1.Move X, Y
End If
End SubPrivate Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MSsign = False
End Sub
在拖动的过程中,会发生闪动,如何消除,或者使用其它方法实现?
Private m_y As Long
Private m_w As Long
Private m_h As Long
Private m_lx As Long
Private m_ly As Long
Private m_moving As BooleanPrivate Sub Image1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = vbLeftButton Then
m_x = x: m_y = y
m_lx = Image1.left: m_ly = Image1.top
m_w = Image1.Width: m_h = Image1.Height
m_moving = True
Me.DrawMode = vbNotXorPen
Me.Line (m_lx, m_ly)-(m_lx + m_w, m_ly + m_h), mc_border_color, B
End If
End SubPrivate Sub Image1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim tx As Long
Dim ty As Long
If m_moving Then
tx = Image1.left + (x - m_x)
ty = Image1.top + (y - m_y)
Me.Line (tx, ty)-(tx + m_w, ty + m_h), mc_border_color, B
Me.Line (m_lx, m_ly)-(m_lx + m_w, m_ly + m_h), mc_border_color, B
m_lx = tx
m_ly = ty
End If
End SubPrivate Sub Image1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If m_moving And (Button = vbLeftButton) Then
m_moving = False
Me.Line (m_lx, m_ly)-(m_lx + m_w, m_ly + m_h), mc_border_color, B
Me.DrawMode = vbCopyPen
Image1.Move m_lx, m_ly
End If
End Sub如果画出来的框被其他控件挡住的话,把窗体(或PictureBox)的 ClipControls 设为 False。
这样就省得自己写了