我正在使用 c# 创建一个 Windows 应用程序。我有一个按钮应该捕获图像(整个桌面屏幕)并将其保存在一个文件夹中。我还需要显示图像的预览。
问问题
3355 次
3 回答
3
示例代码:
Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Size.Width, Screen.PrimaryScreen.Bounds.Size.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size);
g.Save();
bmp.Save("D:\\file.jpg", ImageFormat.Bmp);
至于显示预览。IMO 自己编写它并不难。
于 2011-07-04T14:10:52.183 回答
1
有不同的方式来执行你带来的东西。使用Screen
类,我在网上找到了一些简单的示例。其他人正在使用 Direct3D。
- TeboScreen:基本的 C# 屏幕捕获应用程序;
- 捕获屏幕截图;
- C# – 使用 Direct3D 进行屏幕截图;
- 捕获桌面屏幕;
- 使用 C# 和 Windows 窗体在 .NET 中增强的桌面记录器;(可能不适合您的问题,但如果您计划更多功能,可能会变得有趣。)
- 使用 C# 捕获屏幕图像。
简而言之,这个想法包括使用Screen
类或您喜欢的方式获取桌面图像,将其存储到Bitmap
对象中并将该位图保存到文件中。
至于显示预览,一旦您的Bitmap
实例被创建,您只需要 aPictureBox
并设置它的Image
属性并将您的表单显示给用户,以便他可以看到图像。
希望这可以帮助!=)
于 2011-07-04T14:09:41.907 回答
0
您将需要导入一些 Interop dll。
看看下面的例子很好地展示了如何捕获屏幕截图并保存到磁盘。
public void CaptureScreen(string fileName,ImageFormat imageFormat)
{
int hdcSrc = User32.GetWindowDC(User32.GetDesktopWindow()),
hdcDest = GDI32.CreateCompatibleDC(hdcSrc),
hBitmap = GDI32.CreateCompatibleBitmap(hdcSrc,
GDI32.GetDeviceCaps(hdcSrc,8),GDI32.GetDeviceCaps(hdcSrc,10)); GDI32.SelectObject(hdcDest,hBitmap);
GDI32.BitBlt(hdcDest,0,0,GDI32.GetDeviceCaps(hdcSrc,8),
GDI32.GetDeviceCaps(hdcSrc,10),hdcSrc,0,0,0x00CC0020);
SaveImageAs(hBitmap,fileName,imageFormat);
Cleanup(hBitmap,hdcSrc,hdcDest);
}
以上示例取自网站。Perry Lee 的所有代码
于 2011-07-04T14:00:21.677 回答