2012-10-16 148 views
15

我正在研究一個基本的繪圖應用程序。我希望用戶能夠保存圖像的內容。將圖像保存到文件

enter image description here

我想我應該用

System.Drawing.Drawing2D.GraphicsState img = drawRegion.CreateGraphics().Save(); 

,但這並不能幫助我保存到文件中。

+1

'drawRegion'是什麼樣的控件? – Steve

+1

'drawRegion'是一個面板 – Victor

回答

26

你可以嘗試使用這種方法

SaveFileDialog dialog = new SaveFileDialog(); 
if (dialog.ShowDialog() == DialogResult.OK) 
{ 
    int width = Convert.ToInt32(drawImage.Width); 
    int height = Convert.ToInt32(drawImage.Height); 
    Bitmap bmp = new Bitmap(width,height);   
    drawImage.DrawToBitmap(bmp, new Rectangle(0, 0, width, height); 
    bmp.Save(dialog.FileName, ImageFormat.Jpeg); 
} 
+7

@Joel對,你直到你用手寫這樣的代碼才能感覺到Intellisense足夠了 – Steve

+1

爲什麼你不處理bmp對象?難道這不會使文件處於「打開」狀態嗎? –

+0

這張圖片會保存在哪裏? –

3

如果你在的圖形繪製,保存圖像控制比你應該在Bitmap上畫一些你在畫布上繪製的東西,但是要記住Bitmap需要是你所做的控制的確切尺寸awing on:

Bitmap bmp = new Bitmap(myControl.ClientRectangle.Width,myControl.ClientRectangle.Height); 
    Graphics gBmp = Graphics.FromImage(bmp); 
    gBmp.DrawEverything(); //this is your code for drawing 
    gBmp.Dispose(); 
    bmp.Save("image.png", ImageFormat.Png); 

或者您可以使用Control的DrawToBitmap方法。像這樣:

Bitmap bmp = new Bitmap(myControl.ClientRectangle.Width, myControl.ClientRectangle.Height); 
myControl.DrawToBitmap(bmp,new Rectangle(0,0,bmp.Width,bmp.Height)); 
bmp.Save("image.png", ImageFormat.Png);