Entwickler-Ecke
Multimedia / Grafik - Screenshot einer "Zeichenfläche"
Max064 - Di 13.07.10 08:53
Titel: Screenshot einer "Zeichenfläche"
Hallo,
mit Hilfe einer neu erstellten Klasse und eines Arrays erstelle ich eine Liste an grafischen Objekten (u.a. Linien, Kreise, Bilder etc.). Diese werden durch den OnPaint Event Handler in einer bestimmten Zeichenfläche in den e.Graphics gezeichnet. Es ist also ein Art Grafikeditor.
Nun möchte ich aber diese neu erstellte Zeichnung als .jpg oder ähnliches speichern. Problem hier ist, ich muss eine Bitmap von dieser Zeichenfläche erstellen.
Wenn ich die gesamte Form mit DrawToBitmap zeichnen lasse, wird immer der gesamte Rahmen auch mit ausgegeben, was ich zu vermeiden suche.
Wie kann ich die Zeichenfläche als Control ansprechen, damit ich auch nie die zeichne? Oder gibt es eine andere Methode, um aus der Zeichenfläche eine Bitmap zu machen?
Ich bin dankbar für jede Hilfe!
lg Max
Th69 - Di 13.07.10 10:29
Erstelle dir einfach eine Bitmap und zeichne dann nach Aufruf von
C#-Quelltext
1:
| Graphics g = Graphics::FromImage(bitmap); |
deine Grafik-Elemente dort drauf und speichere danach dann die Bitmap ab.
Alternativ kannst du auch umgekehrt vorgehen und immer direkt auf die Bitmap zeichnen und im OnPaint dann mittels "g.DrawImage(bitmap)" diese Bitmap darstellen. Problem hierbei ist dann nur das Rückgängigmachen von einzelnen Zeichenfunktionen (außer nochmals alles neu zu zeichnen).
Edit: du könntest auch einfach ein Panel nehmen und dort drauf zeichnen (anstatt auf der Form) und dann dessen DrawToBitmap-Methode aufrufen.
Max064 - Di 13.07.10 11:21
Ich habe noch nie mit Panels gearbeitet! Verhält sich das Panel prinzipiell wie die Form? Also kann ich da einfach drauf zeichnen wie ich lustig bin, habe dann aber die Möglichkeit den Panel Steuerelement zu nutzen (und damit die Methode DrawToTimap zu nutzen?)?
lg Max
Th69 - Di 13.07.10 11:44
Ja, ein Panel ist extra dafür gedacht (Panel.Border sollte dann auf 'None' stehen, damit du nicht auch dort einen Rand hast).
Also einfach das Panel auf die Form setzen, dann Dock auf 'Fill' stellen und dann statt OnPaint des Forms das Paint-Ereignis des Panels benutzen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!