当前位置:  开发笔记 > 编程语言 > 正文

将屏幕捕获到位图中

如何解决《将屏幕捕获到位图中》经验,为你挑选了2个好方法。

我想在我的代码中捕获屏幕以获取图像 - 就像使用键盘上的"打印屏幕"按钮一样.

有谁知道如何做到这一点?我没有起点.



1> Gary Willoug..:

如果使用.NET 2.0(或更高版本)框架,您可以使用CopyFromScreen()此处详述的方法:

http://www.geekpedia.com/tutorial181_Capturing-screenshots-using-Csharp.html

//Create a new bitmap.
var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                               Screen.PrimaryScreen.Bounds.Height,
                               PixelFormat.Format32bppArgb);

// Create a graphics object from the bitmap.
var gfxScreenshot = Graphics.FromImage(bmpScreenshot);

// Take the screenshot from the upper left corner to the right bottom corner.
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                            Screen.PrimaryScreen.Bounds.Y,
                            0,
                            0,
                            Screen.PrimaryScreen.Bounds.Size,
                            CopyPixelOperation.SourceCopy);

// Save the screenshot to the specified path that the user has chosen.
bmpScreenshot.Save("Screenshot.png", ImageFormat.Png);


是的,看一下.NET Screen对象以获取其他屏幕.请注意,在上面的调用中,我使用`Screen.PrimaryScreen`来获取主屏幕?您可以使用`Screen.AllScreens`来获取所有这些数组.`Screen.AllScreens [n] .Bounds.Width`等......
如果更改显示设置**将所有项目的大小**更改为**更大**,代码只能捕获部分屏幕.怎么解决?

2> 小智..:
// Use this version to capture the full extended desktop (i.e. multiple screens)

Bitmap screenshot = new Bitmap(SystemInformation.VirtualScreen.Width, 
                               SystemInformation.VirtualScreen.Height, 
                               PixelFormat.Format32bppArgb);
Graphics screenGraph = Graphics.FromImage(screenshot);
screenGraph.CopyFromScreen(SystemInformation.VirtualScreen.X, 
                           SystemInformation.VirtualScreen.Y, 
                           0, 
                           0, 
                           SystemInformation.VirtualScreen.Size, 
                           CopyPixelOperation.SourceCopy);

screenshot.Save("Screenshot.png", System.Drawing.Imaging.ImageFormat.Png);


运行良好,但有一般的用户界面冻结.与需要每秒分析屏幕10-20次的项目(如我的)不兼容.
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有