Oefening 8: Tekenen met de muis
Als we met de muis lijnen willen tekenen, hebben we daarvoor de events MouseDown en MouseMove nodig.
Mousedown wordt aangeroepen als u op een knop van de muis klikt.

De functie heeft de volgende parameters:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Button: het nummer van de muisknop linker- of rechter.
Shift: waarde die aangeeft of je eveneens op de Shift-toets hebt geduwd.
X,Y: x-positie en ypositie van de plaats waar u klikt met de muis.


Oefening: Plaats onderstaande code eens in het event, zodat je in het immediate window kunt zin wat er gebeurt:
                        Debug.print Button,Shift,X,Y

Hoe kunnen we nu tekenen?

In een formulier bestaan twee systeemvariabelen (hoeft u dus niet te declareren) waarin een positie in het formulier bijgehouden wordt. Als we de linkermuisknop induwen gaan we die positie bijhouden als volgt:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then    ' Check of de linkermuisknop is ingedrukt
        CurrentX = X: CurrentY = Y ' bewaar de muispositie in CurrentX en CurrentY
    End If
End Sub

Als we muisknop ingeduwd houden en de muis bewegen, wordt het event MouseMove aangeroepen. Dus moeten we hierin de code plaatsen om een lijntje te tekenen vanaf de voorgaande muispositie:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then  ' Check of de linkermuisknop is ingedrukt
        'Teken nu een lijntje vanaf het punt (CurrentX,CurrentY)
        'naar het punt (X,Y)
        Line -(X, Y)
    End If
End Sub

Vanaf nu kunnen we tekenen!
Zorg er wel voor dat Autoredraw van het formulier op True staat, zodat de tekening behouden blijft.

Oefening: Vul de voorgaande oefening aan met een menu zodat je kunt kiezen uit de lijndikte 1, 2 en 4, en uit de kleuren Zwart, Rood Blauw, Geel en Groen .
De dikte van de lijnen kunt u kiezen door de eigenschap DrawWidth in te stellen.
De kleur van de lijnen kunt u instellen met de eigenschap ForeColor.
De eigenschap FillStyle zet u op Solid.
Bij het opstarten moet de lijndikte op één staan en de kleur op zwart. (Ook in het menu!)

Oefening: Maak ook nog een menu-optie bij om het formulier te wissen! Gebruik een MessageBox met een JA- en NEE-knop, om de gebruiker te laten bevestigen of hij het formulier echt wil wissen of niet


Broncode