2010-05-21 12 views
8

Ich habe zwei Fragen:erstellen Grafik und speichern Sie es als Bitmap

1) Ich habe ein PictureBox und sein Dock ist auf Füllen. Wenn ich die Form Größe verändere, kann ich eine Grafik seitens des PictureBox nicht erzeugen, der verlängert wird. Was ist das Problem?

2) Ich möchte die Grafik konvertieren, die auf dem PictureBox zu Bitmap und speichern Sie es als * .JPG oder * .bmp erstellt wird. Wie kann ich das machen?

Antwort

6

können Sie die handle device verwenden, um die Bitmap aus dem Bildfeld

Graphics g = pictureBox1.CreateGraphics();   
Bitmap bitMap = Bitmap.FromHbitmap(g.GetHdc()); 
bitMap.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg); 

oder noch besser werden, wenn das PictureBox does`nt das Bild ändern, können Sie das Bild direkt von der PictureBox Kontrolle bekommen

0

1) Ihre Beschreibung ist sehr vage. Hast du eine Ausnahme? Zeigt es falsche Ergebnisse an? Was ist los?

2) Sie müssen das Bild von der PictureBox abrufen und Save method verwenden.

+0

1) Ich habe nicht jede eception bekommen und es funktioniert nicht nur Grafhic tut creat falsches Ergebnis angezeigt werden soll. –

+0

Bitte versuchen Sie es genauer zu beschreiben ... es ist wirklich schwer zu verstehen, was passiert. Woher weißt du, dass es nicht erstellt wurde? Ist das nur, wenn Sie Dock auf Füllen setzen? – mafu

+0

Sie wissen, dass eine PictureBox ein MouseClick-Ereignis hat. wenn ich auf die PictureBox klicke, möchte ich ein Rechteck auf PictureBox zeichnen. es ist Arbeit, aber wenn ich Form zu größeren beacaus Größe das Dock von PictureBox bin, fülle es lrger wie Form. Nach der Größenanpassung kann ich Grafhic nicht auf dem Teil erstellen, der größer wurde ..... Ich hoffe, Sie haben mein Problem verstanden –

0

Wenn die Größe der Picturebox geändert wird, um das Formular auszufüllen, scheint es, dass die Image-Eigenschaft gleich bleibt.

Also, was Sie tun müssen, ist die PictureBox.OnSizeChanged Ereignis zu behandeln und dann den folgenden Code verwenden, die Größe des Bildes:

private void pictureBox1_SizeChanged(object sender, EventArgs e) 
{ 
    if ((pictureBox1.Image != null)) 
    { 
     pictureBox1.Image = new Bitmap(pictureBox1.Image, pictureBox1.Size); 
    } 
} 

das Bild Verwendung zu speichern:

pictureBox1.Image.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg); 

Hoffnung das hilft!

+0

-1: das Problem bezieht sich nicht auf das Bild von PictureBox. Er versucht, etwas auf einem Steuerelement (PictureBox, Panle oder sogar Form selbst) zu zeichnen. –

1

die Sie interessieren, funktioniert gut für mich ...

private void SaveControlImage(Control ctr) 
    { 
     try 
     { 
      var imagePath = @"C:\Image.png"; 

      Image bmp = new Bitmap(ctr.Width, ctr.Height); 
      var gg = Graphics.FromImage(bmp); 
      var rect = ctr.RectangleToScreen(ctr.ClientRectangle); 
      gg.CopyFromScreen(rect.Location, Point.Empty, ctr.Size); 

      bmp.Save(imagePath); 
      Process.Start(imagePath); 

     } 
     catch (Exception) 
     { 
      // 
     } 
    } 
+0

Ich habe dies vorher versucht, leider ist das Bild, das Sie speichern, dann auf die Größe des Steuerelements beschränkt. Wenn Sie also Zoom verwenden, um ein riesiges Bild in ein Steuerelement einzupassen, wird beim Exportieren des Bildes die gerenderte Größe und nicht die tatsächliche Größe angezeigt. – Zorgarath

Verwandte Themen