-

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von X-Zat.

    Na dann geb ich dir mal einer wenig C&P (leider aber nicht mit VB-Codeansicht, da Google Chrome das nicht richtig übernimmt):

    Spoiler anzeigen
    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!

    MfG,
    X-Zat / Momo
    ...

    X-Zat schrieb:


    '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

    ...
    Besser

    VB.NET-Quellcode

    1. mousePointing = Not MousePointing 'setzt einen Boolean auf den jeweils anderen Wert
    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 :)

    MfG,
    X-Zat / Momo