保存路径
SaveFileDialog saveImageDialog = new SaveFileDialog();
saveImageDialog.Title = "保存图片";
saveImageDialog.DefaultExt = ".png";
DialogResult dr = saveImageDialog.ShowDialog();
if (dr == DialogResult.OK)
{
CaptureImage(saveImageDialog.FileName);
MessageBox.Show("保存成功!");
}
private void CaptureImage(string path)
{
try
{
//获得当前屏幕的大小
Rectangle rect = new Rectangle();
rect = Screen.GetWorkingArea(this);
//创建一个以当前屏幕为模板的图象
Graphics g1 = this.CreateGraphics();
//创建以屏幕大小为标准的位图
Image myImage = new Bitmap(panel1.Width, panel1.Height, g1);
Graphics g2 = Graphics.FromImage(myImage);
//得到屏幕的DC
IntPtr dc1 = g1.GetHdc();
//得到Bitmap的DC
IntPtr dc2 = g2.GetHdc();
//调用此API函数,实现屏幕捕获
BitBlt(dc2, 0, 0, rect.Width, rect.Height, dc1, panel1.Location.X, panel1.Location.Y, 13369376);
//释放掉屏幕的DC
g1.ReleaseHdc(dc1);
//释放掉Bitmap的DC
g2.ReleaseHdc(dc2);
//以JPG文件格式来保存
myImage.Save(path, ImageFormat.Png);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message + " 保存图片失败!");
}
}
[DllImportAttribute("gdi32.dll")]
private static extern bool BitBlt(
IntPtr hdcDest, // 目标 DC的句柄
int nXDest,
int nYDest,
int nWidth,
int nHeight,
IntPtr hdcSrc, // 源DC的句柄
int nXSrc,
int nYSrc,
System.Int32 dwRop // 光栅的处理数值
);
}
这样就可以,有更好的方法可以联系我