Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
picturebox.Graphics als Bild Speichern (.png o.ä.)
userid9077
myCSharp.de - Member



Dabei seit:
Beiträge: 30

Themenstarter:

picturebox.Graphics als Bild Speichern (.png o.ä.)

beantworten | zitieren | melden

hi
ich male auf der graphic g von einer pictureBox rum.
die möchte ich dann als Bild speichern.
Wie geht das?



Graphics g = pictureBox1.CreateGraphics();
            g.Clear(Color.White);
            g.DrawString(titel, font, Brushes.Black, 10, 10);
private Nachricht | Beiträge des Benutzers
Levitas
myCSharp.de - Member



Dabei seit:
Beiträge: 96

beantworten | zitieren | melden

Ich würde es so machen:

Das was in der Paint steht, verschiebst du in eine eigene Methode -->


public void RenderBox(Graphics renderTarget)
{
    // Zeichnen mit renderTarget
}

in der Paint:

RenderBox(e.Graphics);

und zum speichern:

public void Save(string path)
{
    Bitmap bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    Graphics graphics = Graphics.FromImage(bitmap);
    RenderBox(graphics);
    using (Stream stream = new FileStream(path, FileMode.Create, FileAccess.Write))
    {
        bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
    }
}

So sollte es gehen! ;)
Und vergiss das "using System.IO;" nicht! ;)
Lg Marc

Edit: Vergiss das mit dem CreateGraphics! Nimm lieber die Paint-Methode der PictureBox, da bekommst du über "e.Graphics" schon was mitgeliefert ;)

Lg
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Levitas am .
private Nachricht | Beiträge des Benutzers
F.Z.
myCSharp.de - Member



Dabei seit:
Beiträge: 160

beantworten | zitieren | melden

Hallo,

siehe [Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox)

fz
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
private Nachricht | Beiträge des Benutzers
userid9077
myCSharp.de - Member



Dabei seit:
Beiträge: 30

Themenstarter:

beantworten | zitieren | melden

was mach ich da noch falsch?

 private void button1_Click(object sender, EventArgs e)
        {
            //PAINT
            pictureBox1.Invalidate();
        }

        private void pictureBox1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawString(Environment.CurrentDirectory [email protected]"\asd.bmp", DefaultFont, Brushes.SaddleBrown, 10, 10);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //SAVE
            Bitmap bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            Graphics graphics = Graphics.FromImage(bitmap);
            using (Stream stream = new FileStream(@"\asd.bmp", FileMode.Create, FileAccess.Write))
            {
                bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
            }
        }

EDIT: was er speichert ist ein schwarzes bild in den richtigen dimensionen
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von userid9077 am .
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4136

beantworten | zitieren | melden

Du speicherst ja auch einfach eine leere (neue) Bitmap mit der Größe deiner PictureBox ;-)
Darum hat levitas ja extra die Methode 'RenderBox(graphics);' noch mal aufgerufen...

Lies dir am besten das Tutorial in Ruhe durch.

Und wenn du nur selber etwas zeichnen willst (und kein fertiges Bild (=Image) anzeigen), dann nimm statt der PictureBox einfach ein Panel.
private Nachricht | Beiträge des Benutzers
userid9077
myCSharp.de - Member



Dabei seit:
Beiträge: 30

Themenstarter:

beantworten | zitieren | melden

Uuups.
Danke!
(jetzt gehts)
private Nachricht | Beiträge des Benutzers