2016-11-03 48 views
0

我想在windows窗体(C#)中创建一个绘图应用程序。它有不同的选项卡,在一个选项卡中有一个图片框,用作我的绘图表面。我使用以下代码通过从屏幕复制来保存图像:在C中保存图形#

Bitmap bmpz = new Bitmap(pictureBox1.Width, pictureBox1.Height); 
Graphics gSaveAs = Graphics.FromImage(bmpz); 
Rectangle rectSaveAs = pictureBox1.RectangleToScreen(pictureBox1.ClientRectangle); 
gSaveAs.CopyFromScreen(rectSaveAs.Location, Point.Empty, pictureBox1.Size); 

是否有更好的方式来保存图形?上述方法产生图像,但不需要与绘制的图像相同。例如,如果我有一个弹出窗口或在图片框顶部的东西,那么保存的图片也会弹出一个窗口。我怎样才能保存屏幕上绘制的内容?

+1

,你应该使用pictureBox1.DrawToBitmap从Paint事件保存的BackgroundImage,图片和任何绘图到一个文件! – TaW

+0

谢谢@TaW。有效。 – Abin

回答

-1

我会画一个位图并将其显示在PictureBox中。这样你就不需要抓住屏幕。

Bitmap backPage = new Bitmap(pictureBox1.Width, pictureBox1.Height); 
pictureBox1.Image = backPage; 

using(var g = Graphics.FromImage(backPage)) 
{ 
    // draw 
} 

pictureBox1.Refresh();