picturebox1 imageformat fromfile from example c# graphics

c# - imageformat - Guardando System.Drawing.Graphics en un png o bmp



picturebox1 image system drawing image fromfile (5)

Tengo un objeto de gráficos que he dibujado en la pantalla y necesito guardarlo en un archivo png o bmp. Los gráficos no parecen admitir eso directamente, pero debe ser posible de alguna manera.

Cuales son los pasos


Aquí está el código:

Bitmap bitmap = new Bitmap(Convert.ToInt32(1024), Convert.ToInt32(1024), System.Drawing.Imaging.PixelFormat.Format32bppArgb); Graphics g = Graphics.FromImage(bitmap); // Add drawing commands here g.Clear(Color.Green); bitmap.Save(@"C:/Users/johndoe/test.png", ImageFormat.Png);

Si sus Gráficos están en un formulario, puede usar esto:

private void DrawImagePointF(PaintEventArgs e) { ... Above code goes here ... e.Graphics.DrawImage(bitmap, 0, 0); }

Además, para guardar en una página web, puede utilizar esto:

MemoryStream memoryStream = new MemoryStream(); bitmap.Save(memoryStream, ImageFormat.Png); var pngData = memoryStream.ToArray(); <img src="data:image/png;base64,@(Convert.ToBase64String(pngData))"/>

Los objetos gráficos son una superficie de dibujo GDI +. Deben tener un contexto de dispositivo adjunto en el que basarse, es decir, un formulario o una imagen.


Es probable que esté dibujando en una imagen o en un control. Si en uso de imagen

Image.Save("myfile.png",ImageFormat.Png)

Si dibuja en el control, use Control.DrawToBitmap () y luego guarde la imagen devuelta como se muestra arriba.

Gracias por la corrección. No sabía que pudiera dibujar directamente en la pantalla.


Prueba esto, funciona bien para mi ...

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) { // } }


Cópielo en un Bitmap y luego llame al método Save del mapa de bits.

Tenga en cuenta que si está literalmente dibujando en la pantalla (tomando el contexto del dispositivo de la pantalla), entonces la única manera de guardar lo que acaba de dibujar en la pantalla es revertir el proceso dibujando desde la pantalla a un Bitmap . Esto es posible, pero obviamente sería mucho más fácil simplemente dibujar directamente en un mapa de bits (usando el mismo código que usas para dibujar en la pantalla).


Graphics graph = CreateGraphics(); Bitmap bmpPicture = new Bitmap("filename.bmp"); graph.DrawImage(bmpPicture, width, height);