使用.NET捕获屏幕截图

Bha*_*yal 39 .net c# screenshot

可能重复:
我如何在位图中捕获屏幕?

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

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

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

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

Cod*_*ray 53

使用.NET Framework抓取屏幕截图当然是可能的.最简单的方法是创建一个新Bitmap对象并使用该Graphics.CopyFromScreen方法绘制到该对象中.

示例代码:

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);
}
Run Code Online (Sandbox Code Playgroud)

警告:此方法不适用于分层窗口.汉斯帕桑特的答案在这里解释让那些在你的屏幕截图需要更复杂的方法.

  • 我认为它适用于Windows 7+中的分层窗口.(这打破了很多黑客.叹了口气.) (4认同)