Für dieses Beispiel brauchen Sie eine Form und einen Timer. Ziehen Sie mit der Maus bei gestarteter Anwendung ein Rechteck...
Private oldX As Single
Private oldY As Single
Private StartX As Single
Private StartY As Single
Private Sub Form_Load()
Timer1.Interval = 100
Me.DrawStyle = vbDashDotDot ' oder vbDot oder vbDash oder vbDashDot
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = False
StartX = X
StartY = Y
oldX = StartX
oldY = StartY
Me.Cls
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim sm As Integer
If Button = 1 Then
sm = Me.DrawMode
Me.DrawMode = vbInvert
Me.Line (StartX, StartY)-(oldX, oldY), , B
Me.Line (StartX, StartY)-(X, Y), , B
oldX = X
oldY = Y
Me.DrawMode = sm
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Dim saveddrawstyle As Integer
Dim savedmodus As Integer
saveddrawstyle = Me.DrawStyle
savedmodus = Me.DrawMode
Me.DrawStyle = vbSolid
Me.DrawMode = vbInvert
Me.Line (StartX, StartY)-(oldX, oldY), , B
Me.DrawMode = savedmodus
Me.DrawStyle = saveddrawstyle
End Sub