Hallo,
ich hab folgende Probleme:
ich zeichne auf eine Picturebox per GDI+ ein Diagramm.
Das Zeichnen wird gleich durch das Load-Ereignis eines Forms aufgerufen.
Zuerst führe ich noch dies durch, um die Picturebox zu bereinigen:
PictureBox1.Refresh() Anschließend kommen die besagten Linien,...: (Beispiel)
Dim strecke As System.Drawing.Graphics
strecke = PictureBox1.CreateGraphics()
strecke.DrawLine(New Pen(Brushes.Black, 1), 1, 1, 5, 5)
strecke.Dispose() Für ein paar Sekunden erscheint auch das gezeichnete, aber danach ist es gleich wieder weiß, also leer.
Deswegen habe ich mir ein Button gemacht, der nochmal dieselbe Zeichnenfunktion aufruft, und dann werden alle Linien gezeichnet, und bleiben auch da.
Wie kann ich einen Button (oder ein anderes zusätzliches Ereignis) umgehen?
2.Problem
Ich möchte das gezeichnete Diagramm als Bilddatei (zb .bmp) speichern. Zu diesem Problem gibt es zwar viele Antworten, doch irgendwie nicht genau für meins.
- ich kann nicht direkt PictureBox1.Image.Save("C:\test.bmp", ...ausführen, da der Picturebox vorher kein Bild (Image) zugewiesen wurde.
- die Möglichkeit mit einem Bitmap-Objekt:
Dim bmp As New Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)
Me.PictureBox1.Image = DirectCast(bmp, Image)
Dim graphic As Graphics = Graphics.FromImage(Me.PictureBox1.Image)
graphic.FillRectangle(Brushes.White, New RectangleF(0, 0, _
Me.PictureBox1.Image.Width, Me.PictureBox1.Image.Height))
graphic.DrawRectangle(Pens.Blue, New Rectangle(10, 10, 30, 30))
PictureBox1.Image.Save("C:\test.bmp", _
System.Drawing.Imaging.ImageFormat.Bmp) 'kein Fehler mehr!(kopiert von einem anderen Forenbeitrag)
Was bewirkt hier das "DirectCast(bmp, Image)" ?
bei mir enthält die abgespeicherte Bilddatei nur die beiden Rechtecke, die hier extra gezeichnet wurden, ich möchte doch aber gerne alle bisher gezeichneten Linien, die sich auf der Picturebox befinden, in der neuen Bilddatei haben?
Sonst müsste ich den kompletten Zeichenvorgang doppelt für die Bilddatei schreiben?
Vielleicht gibt es eine Lösung für mein Problem?
Vielen Dank für eure ANtworten, Anregungen,...
mfg rieche |