使用.NET捕获屏幕截图

时间:2011-02-19 05:42:19

标签: c# .net screenshot

  

可能重复:
  How May I Capture the Screen in a Bitmap?

我需要制作一个应用程序,只要按下某个特定按钮,就会捕获当前屏幕的快照。

我搜索了很多,但我只找到了如何捕获当前窗口。

请你帮我弄清楚如何在.NET中做到这一点?

我们可以通过点击打印屏幕并使用油漆保存图像来手动完成此操作。我需要做同样的事情,但我想用一个程序来做。

1 个答案:

答案 0 :(得分:51)

使用.NET Framework获取屏幕截图当然是可能的。最简单的方法是创建一个新的Bitmap对象,然后使用Graphics.CopyFromScreen method绘制对象。

示例代码:

using (Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
                                            Screen.PrimaryScreen.Bounds.Height))
using (Graphics g = Graphics.FromImage(bmpScreenCapture))
{
    g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                     Screen.PrimaryScreen.Bounds.Y,
                     0, 0,
                     bmpScreenCapture.Size,
                     CopyPixelOperation.SourceCopy);
}

警告:此方法无法用于分层窗口。 Hans Passant的回答here解释了在屏幕截图中获取这些内容所需的更复杂的方法。