Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何抓取图像并将其保存到文件夹[c#windows应用程序]_C#_Windows_Image_Screen Grab - Fatal编程技术网

如何抓取图像并将其保存到文件夹[c#windows应用程序]

如何抓取图像并将其保存到文件夹[c#windows应用程序],c#,windows,image,screen-grab,C#,Windows,Image,Screen Grab,我正在使用c#创建windows应用程序。我有一个按钮,可以捕获图像(整个桌面屏幕)并将其保存在文件夹中。我还需要显示图像的预览。您需要导入一些互操作DLL 看一下下面的演示如何很好地捕获屏幕截图并保存到磁盘 public void CaptureScreen(string fileName,ImageFormat imageFormat) { int hdcSrc = User32.GetWindowDC(User32.GetDesktopWindow()), hdcDest

我正在使用c#创建windows应用程序。我有一个按钮,可以捕获图像(整个桌面屏幕)并将其保存在文件夹中。我还需要显示图像的预览。

您需要导入一些互操作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编写的代码都有不同的方法来执行您带来的内容。在课堂上,我在网上找到了一些简单的例子。其他人正在使用Direct3D

  • )
  • )
  • )
  • )
  • );(可能不适合您的问题,但如果您计划进一步的功能,可能会变得有趣。)
  • 简而言之,这个想法包括使用
    屏幕
    类或您最喜欢的方式获取桌面图像,将其存储到对象中,并将此位图保存到文件中

    至于显示预览,一旦创建了
    位图
    实例,您只需设置一个属性并向用户显示表单,以便用户可以看到图像

    希望这有帮助!=)

    示例代码:

    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);
    

    至于显示预览。我自己写并不难。

    有什么问题吗?错误是什么?你试过什么?您的“问题”只是一个陈述。如何捕获桌面屏幕并将图像保存在文件夹中?从您发布的链接/*作者:Perry Lee*提交:捕获屏幕(向程序添加屏幕截图功能)*提交日期:12/29/03*/无需加载所有这些dll。那代码有点过时了。有了.net2.0和更高版本,情况就好多了easier@Niko是的。net net已经取得了长足的进步,而.net 4的进步更大。Nikko,如果我想将显示的图像保存为全分辨率,该怎么办?@RoyiNamir无法使用Graphics.CopyFromScreen方法实现这一点。此方法仅将屏幕的一部分复制到目标。它不知道显示图像的完整分辨率。