2010-05-23 70 views

Trả lời

12

Bạn cần một hình ảnh để vẽ đồ họa của bạn, vì vậy bạn có thể đã có những hình ảnh:

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

Cảm ơn bạn trả lời –

+0

nhờ cho câu trả lời của bạn –

+1

Đây là trường hợp ngược lại với câu hỏi: Câu hỏi là: Graphics sang hình ảnh, không ảnh để đồ họa như bạn đã trả lời –

1

Nếu bạn đang vẽ trực tiếp trên đồ họa của một Control, bạn có thể tạo một Bitmap mới với cùng kích thước như điều khiển và sau đó gọi Control.DrawToBitmap(). Tuy nhiên, cách tốt hơn để đi thường là bắt đầu với một Bitmap, vẽ đồ họa của nó (theo đề nghị của Darin), và sau đó vẽ bitmap vào Control.

24

Bạn không thể chuyển đổi đối tượng Graphics thành hình ảnh vì đối tượng Graphics không chứa bất kỳ dữ liệu hình ảnh nào.

Đối tượng Graphics chỉ là công cụ được sử dụng để vẽ trên canvas. Canvas đó thường là đối tượng Bitmap hoặc màn hình.

Nếu đối tượng Graphics được sử dụng để vẽ trên Bitmap, thì bạn đã có hình ảnh. Nếu đối tượng Graphics được sử dụng để vẽ trên màn hình, bạn sẽ phải tạo ảnh chụp màn hình để có được hình ảnh của canvas.

Nếu đối tượng Graphics được tạo từ điều khiển cửa sổ, bạn có thể sử dụng phương pháp DrawToBitmap của điều khiển để hiển thị điều khiển trên hình ảnh thay vì trên màn hình.

+0

Cảm ơn câu trả lời của –

+0

và lời giải thích của bạn để –

+0

@Sorush: Tôi sửa nó rồi. (Để tham khảo trong tương lai, nếu bạn dự định bình luận để Hesam được thông báo, bạn nên bình luận về câu hỏi chứ không phải trả lời.) – Guffa

12

Như Darin nói, có thể bạn đã có hình ảnh. Nếu không, bạn có thể tạo một hình mới và vẽ một hình mới

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

Save lưu hình ảnh vào tệp trên ổ cứng của bạn.

+0

cảm ơn câu trả lời của bạn –

0

Phương pháp tốt nhất để biến đồ họa vào một bitmap là để thoát khỏi của 'sử dụng' thứ:

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

tôi phát hiện này trong khi tìm cách để biến đồ họa vào một bitmap, và nó hoạt động như một quyến rũ.

Tôi có một số ví dụ về cách sử dụng này:

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

    } 

Với mã này, bạn có thể sử dụng tất cả các lệnh cho các lớp đồ họa, và sao chép chúng vào một bitmap, do đó cho phép bạn lưu bất cứ điều gì thiết kế với lớp đồ họa.

Bạn có thể sử dụng điều này cho lợi thế của mình.

Các vấn đề liên quan