2010-05-23 141 views

回答

12

你需要的圖片,以吸引你的圖形,所以你可能已經擁有了像:

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

謝謝你的回答 – 2010-05-23 15:42:26

+0

謝謝您的回答 – 2010-05-23 15:42:43

+1

這是問題的相反的情況:問題是:圖形到圖像,不形象的圖形,你回答 – 2017-08-24 06:33:31

1

如果你在一個控制的圖形直接繪製,你可以創建一個新的位圖與控件相同的尺寸,然後調用Control.DrawToBitmap()。然而,更好的方法通常是從一個位圖開始,繪製到其圖形上(如Darin所建議的),然後將位圖繪製到控件上。

24

由於Graphics對象不包含任何圖像數據,因此無法將Graphics對象轉換爲圖像。

Graphics對象只是一個用於在畫布上繪製的工具。該畫布通常是Bitmap對象或屏幕。

如果Graphics對象用於在Bitmap上繪圖,那麼您已經擁有該圖像。如果使用Graphics對象在屏幕上繪圖,則必須進行屏幕截圖以獲取畫布圖像。

如果Graphics對象是從一個窗口控件創建,您可以使用控件的方法DrawToBitmap渲染圖像上,而不是屏幕上的控制。

+0

謝謝您的回答 – 2010-05-23 15:41:26

+0

和你解釋 – 2010-05-23 15:43:32

+0

@Sorush:我修好了它。 (爲了將來的參考,如果你打算評論,以便Hesam會得到通知,你應該對問題發表評論,而不是回答。) – Guffa 2010-05-25 12:57:49

12

由於達林說,你可能已經有了這個形象。如果不這樣做,你可以創建一個新的,並繪製到一個

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

Save圖像保存到硬盤驅動器上的文件。

+0

感謝您的回答 – 2010-05-23 15:44:46

0

把圖形轉換成位圖的最好方法是擺脫了「使用」的東西:

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

我發現這一點的同時搞清楚如何將圖形轉換成位圖,它就像一個魅力。

我對如何使用這一些例子:

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

    } 

有了這個代碼,您可以使用所有的圖形類的命令,並將其複製到一個位圖,因此,讓您保存任何設計與圖形類。

您可能會使用這個優勢。