2010-05-23 11 views

Antwort

12

Sie benötigen ein Bild, um auf Grafiken zu zeichnen, so dass Sie wahrscheinlich schon das Bild haben:

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

Dank für Sie –

+0

Dank für Ihre Antwort –

+1

Dies ist das Gegenteil Fall der Frage: Ihre Frage ist: Grafik Bild, nicht beantwortet Bild Grafiken, wie Sie –

1

Wenn Sie sich direkt auf einer Grafik des Steuer zeichnen, können Sie eine neue Bitmap mit dem erstellen gleiche Dimensionen wie das Steuerelement und dann Control.DrawToBitmap() aufrufen. Der bessere Weg ist jedoch normalerweise, mit einer Bitmap zu beginnen, zu seinen Grafiken zu zeichnen (wie von Darin vorgeschlagen) und dann die Bitmap auf das Control zu malen.

24

Sie können ein Objekt Graphics nicht in ein Bild konvertieren, da das Objekt Graphics keine Bilddaten enthält.

Das Objekt Graphics ist nur ein Werkzeug zum Zeichnen auf einer Leinwand. Diese Leinwand ist normalerweise ein Bitmap Objekt oder der Bildschirm.

Wenn das Objekt Graphics zum Zeichnen auf eine Bitmap verwendet wird, dann haben Sie bereits das Bild. Wenn das Objekt Graphics zum Zeichnen auf dem Bildschirm verwendet wird, müssen Sie einen Screenshot erstellen, um ein Bild der Zeichenfläche zu erhalten.

Wenn das Objekt Graphics aus einem Fenstersteuerelement erstellt wurde, können Sie die Methode DrawToBitmap des Steuerelements verwenden, um das Steuerelement auf einem Bild anstatt auf dem Bildschirm zu rendern.

+0

Vielen Dank für Ihre Antwort –

+0

und Ihre Erklärung –

+0

@Sorush: Ich habe es repariert. (Wenn Sie sich zu einem späteren Zeitpunkt dazu äußern möchten, dass Hesam benachrichtigt wird, sollten Sie die Frage kommentieren, keine Antwort.) – Guffa

12

Wie Darin sagt, haben Sie wahrscheinlich schon das Bild. Wenn Sie nicht tun, können Sie einen neuen erstellen und ein

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

Save zu diesen ziehen speichern das Bild in eine Datei auf Ihrer Festplatte.

+0

danke für Ihre Antwort –

0

Die beste Methode Grafik in eine Bitmap zu drehen ist das ‚Verwendung‘ Zeugs loszuwerden:

 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"); 

ich dies, während herauszufinden entdecken, wie Grafiken in eine Bitmap zu drehen, und es funktioniert wie ein Charme.

Ich habe einige Beispiele dafür, wie diese nutzen:

//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; 

    } 

Mit diesem Code können Sie alle Befehle für die Graphics-Klasse verwenden, und kopieren Sie sie in eine Bitmap, also so dass Sie einfach nicht ausgelegt sparen mit der Grafikklasse.

Sie können dies zu Ihrem Vorteil verwenden.