Wie man die Koordinaten und den Klick-Zustand der Maus innerhalb eines Programms abfragt

 

So wird programmiert:

Nach einem Mausklick auf eine PictureBox öffnet sich rechts oben im IDE-Fenster das Menü der Mouse-Events.

Mit jeweils einem Klick auf MouseDownMouseMove und MouseUp werden im Programmcode automatisch die entsprechenden, leeren Funktionen erzeugt.

 

 

 

 

Wichtiger Hinweis: Das Programm funktioniert nicht, wenn Sie diese leeren Funktionen aus anderen Funktionen von Hand in den Quellcode eintragen oder per Copy und Paste erzeugen und einzelne Begriffe überschreiben. Das gilt auch für Buttons.

 

Die folgende, erste sub wird (während der Laufzeit) beim Drücken der linken Maustaste aktiv, sofern sich die Maus über der PictureBox befindet.

 

' Blau markierter Text: Automatisch eingesetzter header der sub. Die Unterstriche sind VB-typische Trennzeichen: 

Private Sub PictureBox1_MouseDown(ByVal sender As Object,  _

ByVal e As System.Windows.Forms.MouseEventArgs)  _

Handles PictureBox1.MouseDown

        flag = 1

        X = e.X

        Y = e.Y

        malen()

    End Sub

 

Die Variable flag wird auf 1 gesetzt. Sie wird später gebraucht: Der Computer "weiß" nun, dass die Maustaste gedrückt wurde. Den zuvor deklarierten Variablen X und Y werden die aktuellen Mauskoordinaten zugeordnet (e.X und e.Y). Die Koordinaten beziehen sich auf die obere linke Ecke der PictureBox. Das" e." gehört zur Syntax der Maus-Koordinaten und darf nicht ersetzt oder weggelassen werden.

Bereits in dieser sub wird zur sub "malen" verzweigt. Warum? Weil es sein könnte, dass wir die Maus gar nicht über die Malfläche ziehen, sondern nur einzelne, durch Klicks erzeugte Punkte malen möchten. Das heißt: Sobald auf die linke Maustaste gedrückt wird, erscheint ein Farbtupfer auf der Bildfläche.

 

 Die zweite sub wird (nur) beim Bewegen der Maus (während der Laufzeit) aktiv:

 

   Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e _

    As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

   

        If flag = 1 Then

            X = e.X

            Y = e.Y

            malen()

        End If

    End Sub

 

Auch hier werden die Koordinaten der Maus an X und Y weitergegeben (und in malen() weiterverarbeitet), aber nur, wenn flag = 1 ist, das heißt, wenn vorher auf die linke Maustaste gedrückt wurde. Warum? Weil sonst auch gezeichnet wird, wenn sich der Mauspfeil zufällig bei nicht gedrückter Maustaste über die PictureBox bewegt.

 

 Die dritte sub wird (nur) beim Loslassen der Maus (während der Laufzeit) aktiv:

 

 Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e _

    As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp

             flag = 0

    End Sub 

 

 

Hier wird nur die Variable flag wieder auf 0 gesetzt, damit der Vorgang von neuem beginnen kann. Mit diesen drei Funktionen kann auf einfache Weise in eine PictureBox gezeichnet werden. Mit kleinen Änderungen können sogar grafische Objekte in einer PictureBox verschoben werden.

 

Zurück