
Das es keine Tutorial Ecke gibt, schreib ich mal mein 'Tutorial für Visual Basic' hier rein.
Es soll ein Malprogramm ergeben, mit dem Ihr selbstverständlich malen könnt

Form und Steuerelemente platzieren
Zuerst muss alles da hin wo es hin soll

In der Standartform müssen folgende Eigenschaften gesetzt werden:
Platziert anschließend eine PictureBox auf frmMain:Name auf frmMain
Backcolor auf Schwarz
BorderStyle auf Fest Einfach
Caption auf Paint Light
ScaleMode auf Pixel
StartUpPosition auf Bildschirmmitte
Zieht sie außerdem etwas größer
Dazu kommen noch 5 Labels die ihr wie auf diesem Bild zu sehen ist gestallten solltet, aber natürlich kann das variiert werden. Die letzten vier Labels sind Buttons, ihr solltet also den Namen von Label1 etc. in lblStift usw. umbenennen.Name auf picBlatt
BackColor auf Weiss
BorderStyle auf Fest Einfach
Appearance auf 2D
AutoRedraw auf True
Modul hinzufügen
Wenn ihr alles so eingestellt habt wie ich es oben beschrieben habe fügt ein Modul zum Projekt hinzu ( Das geht mit Projekt -> Modul hinzufügen -> Neu und Öffnen ). Nennt es modPaint. Dort kommen anschließend folgende praktische Funktionen und Variablen hinein:
Code: Alles auswählen
Option Explicit
'Key API-Funktion,wird für Maustasten-Abfrage benötigt
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Const VK_RBUTTON = &H2
Public Const VK_LBUTTON = &H1
Public Const VK_MBUTTON = &H4
Code: Alles auswählen
Public Function GetMouseButton() As Integer
'// Gibt gedrückten Mausbutton zurück
GetMouseButton = 0 'Keine Maustaste gedrückt
If GetAsyncKeyState(VK_LBUTTON) And &H8000& Then GetMouseButton = 1 'Linke Maustaste
If GetAsyncKeyState(VK_RBUTTON) And &H8000& Then GetMouseButton = 2 'Rechte Maustaste
End Function
Code: Alles auswählen
Public Function rand(ByVal minValue As Double, ByVal maxValue As Double, Optional notRound As Boolean) As Double
'// Erzeugt Zufallszahl zwischen minValue und maxValue
'Kontrolle der Werte
If maxValue = minValue Then
rand = maxValue
Exit Function
End If
maxValue = maxValue + 1
rand = Rnd * (maxValue - minValue) + minValue
If notRound <> True Then rand = Int(rand)
End Function
Code: Alles auswählen
Public Function randColor() As Long
'// Erzeugt Zufallsfarbe
randColor = RGB(rand(0, 255, True), rand(0, 255, True), rand(0, 255, True))
End Function
Weiter geht's mit der Form
Natürlich brauchen wir noch weitere Variablen. Diese deklarieren wir mal spaßeshalber in der Form

Code: Alles auswählen
Option Explicit
'Zeichenmodus
'1 = Stift, 2 = Grafitti
Private DrwMode As Integer
Private Color As Long 'Zeichen-Farbe
Private MouseX As Long, MouseY As Long 'Mauscursor-Position

Bei Klick auf Stift-Label schalten wir den Zeichen-Modus auf 1,beim Grafitti-Label auf 2. Bei Klick auf das Löschen-Label löschen wir das gesammte Blatt und bei Klick auf das Farbe-Wechseln-Label wechseln wir die Farbe - das ist alles so einfach wie es klingt:
Code: Alles auswählen
Private Sub lblClear_Click()
picBlatt.Cls 'Damit löschen wir das gesammte Blatt
End Sub
Private Sub lblColor_Click()
Color = randColor 'Wir wechseln zu einer zufälligen Farbe...
lblColor.ForeColor = Color '...und passen die Schriftfarbe des Labels entsprechend an
End Sub
Private Sub lblGraf_Click()
DrwMode = 2
End Sub
Private Sub lblStift_Click()
DrwMode = 1
End Sub
Code: Alles auswählen
Private Sub picBlatt_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Mauskoordinaten speichern
MouseX = X
MouseY = Y
'Es wird nur etwas gezeichnet wenn auch eine Mauszasze gedrückt wurde!
If GetMouseButton = 0 Then Exit Sub
'Stift-Modus
If DrwMode = 1 Then
picBlatt.Line (MouseX - 2, MouseY - 2)-(MouseX, MouseY), Color, BF
End If
'Grafitti-Modus
If DrwMode = 2 Then
Dim n As Integer
'16 Punkte an zufälliger Position zeichnen
For n = 1 To 16
picBlatt.PSet (rand(MouseX - 8, MouseX + 8), rand(MouseY - 8, MouseY + 8)), Color
Next n
End If
End Sub

Beim Stift-Modus zeichnen wir einfach ein kleines Viereck (ein Punkt wäre etwas zu klein...) an Stelle des Cursors. Beim Grafitti-Modus wird es etwas umfangreicher: Klar ist, dass wir dort mehrere Punkte zeichnen müssen. Allerdings dürfen die nicht aufeinander liegen - dann wäre es ja nur ein Punkt. Deshalb errechnen wir uns mit der rand() Funktion Zufallspunkte zwischen MouseKoordinate - 8 und MouseKoordinate + 8. So erhalten wir den gewünschten Sprüh Effekt.
Das ist alles, euer Malprogramm ist fertig
