2010-05-23 14 views

Respuesta

12

Usted necesita una imagen con el fin de sacar sus gráficos en, por lo que probablemente ya tiene la imagen:

Graphics g = Graphics.FromImage(image); 
+0

Gracias por su respuesta es –

+0

gracias por su respuesta –

+1

Este es el caso opuesto de la pregunta: pregunta es: Gráficos a la imagen, no la imagen para gráficos a medida que respondieron –

1

Si está dibujando directamente en los gráficos de un control, puede crear un nuevo mapa de bits con el mismas dimensiones que el control y luego llamar a Control.DrawToBitmap(). Sin embargo, la mejor manera de hacerlo es comenzar con un mapa de bits, dibujar en sus gráficos (como sugiere Darin) y luego pintar el mapa de bits en el control.

24

No se puede convertir un objeto Graphics en una imagen, ya que el objeto Graphics no contiene ningún dato de imagen.

El objeto Graphics es simplemente una herramienta utilizada para dibujar en un lienzo. Ese lienzo suele ser un objeto Bitmap o la pantalla.

Si el objeto Graphics se usa para dibujar en un Bitmap, entonces ya tiene la imagen. Si el objeto Graphics se usa para dibujar en la pantalla, debería hacer una captura de pantalla para obtener una imagen del lienzo.

Si se creó el objeto Graphics desde un control de ventana, puede usar el método DrawToBitmap del control para representar el control en una imagen en lugar de en la pantalla.

+0

Gracias por su respuesta –

+0

y su explicación a –

+0

@Sorush: Lo arreglé. (Para referencia futura, si tiene la intención de hacer comentarios para que Hesam sea notificado, debe comentar la pregunta, no una respuesta.) – Guffa

12

Como afirma Darin, probablemente ya tenga la imagen. Si no lo hace, puede crear uno nuevo y dibujar a que uno

Image bmp = new Bitmap(width, height); 
using (Graphics g = Graphics.FromImage(bmp)) { 
    // draw in bmp using g 
} 
bmp.Save(filename); 

Save guarda la imagen en un archivo en el disco duro.

+0

gracias por su respuesta –

0

El mejor método para convertir gráficos en un mapa de bits es deshacerse de la 'usando' cosas:

 Bitmap b1 = new Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height); 
     Graphics g = Graphics.FromImage(b1); 
     g.CopyFromScreen(0, 0, Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)); 
     b1.Save("screen.bmp"); 

descubrí este, mientras que averiguar cómo convertir gráficos en un mapa de bits, y funciona como una encanto.

Tengo algunos ejemplos sobre cómo utilizar este:

//1. Take a screenshot 
    Bitmap b1 = new Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height); 
    Graphics g = Graphics.FromImage(b1); 
    g.CopyFromScreen(0, 0, Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height)); 
    b1.Save("screen.bmp"); 

    //2. Create pixels (stars) at a custom resolution, changing constantly like stars 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     /* 
     * Steps to use this code: 
     * 1. Create new form 
     * 2. Set form properties to match the settings below: 
     *  AutoSize = true 
     *  AutoSizeMode = GrowAndShrink 
     *  MaximizeBox = false 
     *  MinimizeBox = false 
     *  ShowIcon = false; 
     *  
     * 3. Create picture box with these properties: 
     *  Dock = Fill 
     * 
     */ 

     //<Definitions> 
     Size imageSize = new Size(400, 400); 
     int minimumStars = 600; 
     int maximumStars = 800; 
     //</Definitions> 

     Random r = new Random(); 
     Bitmap b1 = new Bitmap(imageSize.Width, imageSize.Height); 
     Graphics g = Graphics.FromImage(b1); 
     g.Clear(Color.Black); 
     for (int i = 0; i <r.Next(minimumStars, maximumStars); i++) 
     { 
      int x = r.Next(1, imageSize.Width); 
      int y = r.Next(1, imageSize.Height); 
      b1.SetPixel(x, y, Color.WhiteSmoke); 
     } 
     pictureBox1.Image = b1; 

    } 

Con este código, puede utilizar todos los comandos para la clase Graphics, y copiarlos en un mapa de bits, por lo tanto, lo que permite guardar cualquier cosa diseñada con la clase de gráficos.

Puede usar esto para su ventaja.