C# 使用.NET捕获屏幕截图

C# 使用.NET捕获屏幕截图,c#,.net,screenshot,C#,.net,Screenshot,可能重复: 我需要制作一个应用程序,每当点击某个特定按钮时,它都会捕获当前屏幕的快照 我搜索了很多,但我只找到了如何捕获当前窗口 你能帮我弄清楚如何在.NET中实现这一点吗 我们可以通过点击打印屏幕并使用油漆保存图像来手动完成此操作。我需要做同样的事情,但我想用一个程序来做。当然可以使用.NET Framework抓取屏幕截图。最简单的方法是创建一个新的位图对象,并使用 示例代码: using (Bitmap bmpScreenCapture = new Bitmap(Screen.Prima

可能重复:

我需要制作一个应用程序,每当点击某个特定按钮时,它都会捕获当前屏幕的快照

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

你能帮我弄清楚如何在.NET中实现这一点吗


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

当然可以使用.NET Framework抓取屏幕截图。最简单的方法是创建一个新的
位图
对象,并使用

示例代码:

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的回答解释了在屏幕截图中获取这些内容所需的更复杂的方法。

@searock-这不是重复的,我已经看到了。。。但它是半透明的窗口,我需要截屏整个屏幕,包括任务栏。。。请检查一下again@BhavikGoyal你误解了这个标题,它意味着对桌面进行屏幕截图,如果是半透明的,甚至显示一个窗口。无意冒犯:)但这意味着如果我的窗户在顶部,它围绕着整个屋顶。但即使我的窗口被最小化,或者甚至我的窗口被隐藏,我也需要去做。@Bhavik:我不知道你想做什么。你试图通过评论来澄清你的要求,这只会让我更加困惑。如果您试图每5分钟拍摄一次用户屏幕上可见的任何内容的屏幕截图,则创建一个
计时器
,并处理其
勾选
事件。在这种情况下,请从我的答案中输入代码。“砰,截图”。@Bhavik:你说“我不知道怎么拍整个屏幕的快照”。你试过我发布的代码了吗?这对你不管用吗?我基本上是凭记忆写的;我可能错过了什么。还可以查看Gabe链接到的重复问题;这里显示的代码与我自己的代码非常相似。其中一个样本肯定会抓取整个屏幕的图像。将其与
计时器相结合将允许您每5分钟执行一次。我不明白你错过了什么?你不必证明你为什么要问这个问题;你已经问过了。我想它在Windows7+的分层窗口中正常工作。(这打破了许多黑客。叹气。)如果更改显示设置将所有项目的大小更改为更大,代码只能捕获部分屏幕。如何解决?