Wenn Sie ein Zeichenprogramm programmieren wollen, wäre es doch schön, wenn der Anwender Linien und Rechtecke mit einer Vorschau zeichnen könnte, wie es in MS-Paint der Fall. D.h. bei gedrückter linker Maustaste wird die Linie / das Rechteck sofort in der PictureBox angezeigt und erst beim Loslassen der Maustaste fest in das Bild integriert. Drückt man hingegen während des Ziehens der Line / des Rechtecks zusätzlich die rechte Maustaste, wird die Line / das Rechteck sofort wieder gelöscht. Für das nachfolgende Beispiel wird eine Form mit folgenden Steuerelementen benötigt:
Fügen Sie jetzt noch nachfolgenden Code in den Codeteil der Form ein. Option Explicit ' benötigte Variablen Private x1 As Single Private y1 As Single Private x2 As Single Private y2 As Single Private bLinie As Boolean Private bRechteck As Boolean Private bDown As Boolean Private nColor As Long Private Sub Form_Load() ' Wichtig! picMain.AutoRedraw = True ' Hilfslinien erstellen Me.Controls.Add "VB.Line", "Linie", picMain Me.Controls.Add "VB.Line", "Linie1", picMain Me.Controls.Add "VB.Line", "Linie2", picMain Me.Controls.Add "VB.Line", "Linie3", picMain ' Auswahl-Voreinstellung "Linie" optLine.Value = True ' Farbe auf "rot" setzen nColor = vbRed End Sub Private Sub optLine_Click() ' es soll eine Linie gezeichnet werden bLinie = True bRechteck = False End Sub Private Sub optRectangle_Click() ' es soll ein Rechteck gezeichnet werden bRechteck = True bLinie = False End Sub Private Sub Picmain_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) ' Startwerte festlegen x1 = X: y1 = Y bDown = True ' Wenn eine Linie gezeichnet werden soll... If bLinie = True Then ' "Vorschau-Linie" positionieren... Me.Controls("Linie").x1 = X Me.Controls("Linie").y1 = Y Me.Controls("Linie").x2 = X Me.Controls("Linie").y2 = Y ' ...und anzeigen Me.Controls("Linie").Visible = True ' Wenn ein bRechteck gezeichnet werden soll... ElseIf bRechteck Then ' "Vorschau-Linien" positionieren... Me.Controls("Linie").x1 = x1 Me.Controls("Linie").y1 = y1 Me.Controls("Linie").x2 = x1 Me.Controls("Linie").y2 = Y Me.Controls("Linie1").x1 = x1 Me.Controls("Linie1").y1 = y1 Me.Controls("Linie1").x2 = x1 Me.Controls("Linie1").y2 = Y Me.Controls("Linie2").x1 = x1 Me.Controls("Linie2").y1 = y1 Me.Controls("Linie2").x2 = x1 Me.Controls("Linie2").y2 = Y Me.Controls("Linie3").x1 = x1 Me.Controls("Linie3").y1 = y1 Me.Controls("Linie3").x2 = x1 Me.Controls("Linie3").y2 = Y ' ...und anzeigen Me.Controls("Linie").Visible = True Me.Controls("Linie1").Visible = True Me.Controls("Linie2").Visible = True Me.Controls("Linie3").Visible = True End If End Sub Private Sub Picmain_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) ' Wenn auf die Picturebox gedrückt wurde dann.... If bDown = True And Shift = True Then picMain.Line -(X, Y), nColor End If If bLinie = True And bDown = True Then Me.Controls("Linie").x2 = X ' dann die Vorschau- Me.Controls("Linie").y2 = Y ' Linie positionieren ElseIf bRechteck = True And bDown = True Then Me.Controls("Linie").x2 = x1 Me.Controls("Linie").y2 = Y Me.Controls("Linie1").x2 = X Me.Controls("Linie1").y2 = y1 Me.Controls("Linie2").x1 = Me.Controls("Linie").x2 Me.Controls("Linie2").y1 = Me.Controls("Linie").y2 Me.Controls("Linie2").x2 = X Me.Controls("Linie2").y2 = Y Me.Controls("Linie3").x1 = Me.Controls("Linie1").x2 Me.Controls("Linie3").y1 = Me.Controls("Linie1").y2 Me.Controls("Linie3").x2 = X Me.Controls("Linie3").y2 = Y End If End Sub Private Sub Picmain_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) ' Endpunkte festlegen x2 = X: y2 = Y If bLinie = True Then ' Linie in PictureBox zeichnen picMain.Line (Me.Controls("Linie").x1, _ Me.Controls("Linie").y1)-(Me.Controls("Linie").x2, _ Me.Controls("Linie").y2), nColor ' Linie ausblenden Me.Controls("Linie").Visible = False ElseIf bRechteck = True Then ' Rechteck zeichnen picMain.Line (x1, y1)-(x2, y2), nColor, B ' Hilfslinien ausblenden Me.Controls("Linie").Visible = False Me.Controls("Linie1").Visible = False Me.Controls("Linie2").Visible = False Me.Controls("Linie3").Visible = False End If bDown = False End Sub Dieser Tipp wurde bereits 6.074 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Mehr als 650 MByte geballtes Wissen! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - Online-Update-Funktion u.v.m. |
sevCoolbar 2.0 ![]() Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB / Access und .NET Buchempfehlung Tipp des Monats Dieter Otter Snapshot einer Webseite erstellen Mit dieser Funktion lässt sich ein Snapshot einer Webseite erstellen, die aktuell im WebBrowser-Control angezeigt wird. Unser Dauerbrenner! ![]() 650 MB geballtes Wissen aus 6 Jahren vb@rchiv Online-Update-Funktion Entwickler-Vollversionen u.v.m. |
||||||||||||||||
|
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |
|||||||||||||||||


Linien und Rechtecke mit Vorschau zeichnen



