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 16.652 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevCoolbar 3.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 und MS-Access Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |