Dim mousePointing as Boolean = False 'Boolean ob die Maus schon die PB angeklickt hat, global deklarieren!
Dim mousePosition as Point 'Koordinate, an die die PB wandern soll, global deklarieren!
'Beim MouseClick-Event der PB
If mousePointing = False then
mousePointing = True 'Maus hat jetzt die PB angeklickt
Else
mousePointing = False 'Maus hat bereits die PB angeklickt, Boolean wird zurückgesetzt
End If
'Beim MouseClick-Event der Form
If mousePointing = True Then
mousePosition = Cursor.Position 'oder .Location, ist jetzt aus dem Kopf / Zielkoordinaten werden übergeben
mouseMoveTimer.Start() 'Starte Timer, der die PB bewegt
'Bei einem Timer "mouseMoveTimer" mit Interval < 40 (= max 25 FPS), das Tick-Event
If Not PB.Location.X = mousePosition.X Then
If PB.Location.X - mousePosition.X > 0 Then PB.Location = new Point(PB.Location.X-1,PB.Location.Y) 'PB ist rechts vom gewünschten Punkt, rückt nach links
If PB.Location.X - mousePosition.X < 0 Then PB.Location = new Point(PB.Location.X+1,PB.Location.Y) 'PB ist links vom gewünschten Punkt, rückt nach rechts
End If
If Not PB.Location.Y = mousePosition.Y Then
If PB.Location.Y - mousePosition.Y > 0 Then PB.Location = new Point(PB.Location.Y,PB.Location.Y-1) 'PB ist unter dem gewünschten Punkt, rückt nach oben
If PB.Location.Y - mousePosition.Y < 0 Then PB.Location = new Point(PB.Location.X,PB.Location.Y+1) 'PB ist über dem gewünschten Punkt, rückt nach unten
End If
If PB.Location.X = mousePosition.X AndAlso PB.Location.Y = mousePosition.Y Then mouseMoveTimer.Stop() 'PB ist an der richtigen Position
Hatte ähnliches (auf GDI-Basis) erst kürzlich selbst gemacht, das hier ist eine vereinfachte Version aus dem Kopf.
Ich hoffe, ich konnte helfen!
If mousePointing = False then
mousePointing = True 'Maus hat jetzt die PB angeklickt
Else
mousePointing = False 'Maus hat bereits die PB angeklickt, Boolean wird zurückgesetzt
End If
...
Besser
VB.NET-Quellcode
mousePointing =Not MousePointing 'setzt einen Boolean auf den jeweils anderen Wert
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Daigel-Programming“ ()
Dazu musst du diePosition des Mauszeigers relativ zur Form herausfinden.
Denn in die Titelleistesit z.B. schon in der Form mit einbeschlossen.
Ich glaube, es gibt einen Befehl (irgendwas mit "Client."), mitdem du die Cursor-Position relativ zur Form erhälst - Ansonsten einfach mal Google quälen ;).
Hoffe, ich konnte helfen!
@Leseratte: Habe bis jetzt nur gewusst, wie man in Java eine Boolean-Variable negiert, deine Methode ist um einiges effektiver, danke für den Hinweis