Annonator schrieb:
Wie wärs wenn du eine Bitmap erstellst, bezeichnest und dann der Picturebox als BackgroundImage unterschiebst.
Dann hast du kein Me.Paint-Event, keine Und-Verknüpfung und keine Globale Bool'sche Variable auf die du achten müsstest.
Hier ein möglicher Code, welcher es dir erlaubt auch unregelmäßige Vierecke zu zeichnen (sonst "DrawRectangle"):
VB.NET-Quellcode
- Private Sub Viereck_Malen()
- Dim bmp As Bitmap = New Bitmap(Picturebox1.Width, Picturebox1.Height)
- Dim g As Graphics = Graphics.FromImage(bmp)
- Dim Punkt1X as Point = Textbox1.text
- Dim Punkt1Y as Point = Textbox2.text
- Dim Punkt2X as Point = Textbox3.text
- Dim Punkt2Y as Point = Textbox4.text
- Dim Punkt3X as Point = Textbox5.text
- Dim Punkt3Y as Point = Textbox6.text
- Dim Punkt4X as Point = Textbox7.text
- Dim Punkt4Y as Point = Textbox8.text
- g.DrawLine(Pens.Black, Punkt1X ,punkt1Y, Punkt2X ,punkt2Y)
- g.DrawLine(Pens.Black, Punkt2X ,punkt2Y, Punkt3X ,punkt3Y)
- g.DrawLine(Pens.Black, Punkt3X ,punkt3Y, Punkt4X ,punkt4Y)
- g.DrawLine(Pens.Black, Punkt4X ,punkt4Y, Punkt1X ,punkt1Y)
- Picturebox1.backgroundimage = bmp
- End Sub
Wenn du willst das beim erneuten Zeichnen das vorherige erhaltenbleibt,schreib die 2. beiden Zeilen in der Sub, außerhalb der Sub.
Beim verschieben außerhalb der Sub kommt zwar kein Error, allerdings dann beim Testen erhalte ich eine InnerException Fehlermeldung und das Debugging läuft zwar weiter, aber das Programm selbst öffnet sich nicht. Laut Meldung sei es ein Ungültiger Parameter in dieser Zeile: