mit Graphics erzeugte Grafik speichern
-
Ich habe ein Problem, ich habe mittels Graphics eine Grafic erzeugt nach dem muster:
Graphics ^g = pictureDraw->CreateGraphics(); //pictureDraw ist ein Panel Pen ^ myPen = gcnew Pen(Color::Black); // Pinsel erzeugen myPen->Width = 1; g->DrawLine(myPen,10,10,80,80);
das zeichnet er auch ganz toll aber ich weiß nicht wie ich das nun in eine datei(bmp oder so)schreiben kann.
bin schon total verzweifelt
-
Kannst Du eine Bitmap erzeugen und das Ganze dort (noch mal) rendern?
/// <summary> /// zu renderndes Image /// </summary> protected Bitmap img; /// <summary> /// fertige Grafik auslesen, konvertieren als Strom im BMP-Format /// </summary> public Stream ImageAsBmp { get { Stream s = new MemoryStream(); img.Save(s, ImageFormat.Bmp); s.Position = 0; return s; } } /// <summary> /// fertige Grafik auslesen, konvertieren als Strom im GIF-Format /// </summary> public Stream ImageAsGif { get { Stream s = new MemoryStream(); img.Save(s, ImageFormat.Gif); return s; } }
-
Das versteh ich jetzt nicht ganz
-
Du kannst z.B. mit
public: Bitmap( int width, int height, Graphics^ g )
eine Bitmap aus der Graphics erzeugen und dann Bitmap::Save aufrufen zum speichern. Im obrigen Beispiel wird das Bild in einen Memorystream geschrieben.
Schau Dir mal den Konstruktor und in die Methode Save in der MSDN an, dann wird es klarer.
-
Achso jetzt ist klar hab nicht ganz wargenommen, dass es eine get funktion ist. Werd ich nachher gleich mal ausprobieren. Vielen Dank für die hilfe.
-
also irgendwie ist die erzeugte Grafik leer, ich werd mal meinen Quellcode posten
Graphics ^g = PictureDraw->CreateGraphics(); Pen ^ myPen = gcnew Pen(Color::Red); // Pinsel erzeugen myPen->Width = 10; g->DrawLine(myPen,50,50,400,400); //zeichnen einer Linie Bitmap b =gcnew Bitmap(PictureDraw->Width, PictureDraw->Height, g); b.Save("test.bmp");
er speichert mir das alles auch in eine Datei, aber da ist nur ein schwarzes Bild drin. Ich hoffe ihr könnt mir da weiterhelfen
-
1. Solltest Du das OnPaint-Ereignis für die grafik verwenden:
private: System::Void PictureDraw_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Pen ^ myPen = gcnew Pen(Color::Red); // Pinsel erzeugen myPen->Width = 10; e->Graphics->DrawLine(myPen,50,50,400,400); //zeichnen einer Linie }
2. Dann mit DrawToBitmap
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { Bitmap ^b =gcnew Bitmap(PictureDraw->Width, PictureDraw->Height); PictureDraw->DrawToBitmap(b, Rectangle(0,0,PictureDraw->Width, PictureDraw->Height)); b->Save("C:\\temp\\test.bmp"); }
-
jetzt ist das Bild immerhin weiß. Aber wirklich weiter bringt mich das auch noch nicht ^^
mom was vergessen
Ohhhhh es geht das ist voll geil
Vielen vielen dank