C#使用设备和;表面到屏幕截图游戏

C#使用设备和;表面到屏幕截图游戏,c#,directx,screen-capture,C#,Directx,Screen Capture,我最近发现了surface&device类,它可以解决我拍摄全屏direct3d游戏时遇到的问题 我尝试了以下这篇文章: 我尝试过的第一种方法是: Device device = new Device(0, DeviceType.Default, GetForegroundWindow(), CreateFlags.None, new PresentParameters()); Surface s2 = device.CreateImageSurface(Screen.PrimaryScreen

我最近发现了surface&device类,它可以解决我拍摄全屏direct3d游戏时遇到的问题

我尝试了以下这篇文章:

我尝试过的第一种方法是:

Device device = new Device(0, DeviceType.Default, GetForegroundWindow(), CreateFlags.None, new PresentParameters());
Surface s2 = device.CreateImageSurface(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, Format.A8R8G8B8);
device.GetFrontBuffer(s2);
SurfaceLoader.Save("c:\\Screenshot.bmp", ImageFileFormat.Bmp, s2);
我尝试过的第二种方法是:

Device device = new Device(0, DeviceType.Default, GetForegroundWindow(), CreateFlags.None, new PresentParameters());
Surface s1 = device.GetBackBuffer(0, BackBufferType.Mono);
device.GetFrontBuffer(s1);
在这两种方法上,设备都会报告找不到的dll(无法加载dll“netcfd3dm2_0.dll”:找不到指定的模块。(HRESULT的异常:0x8007007E))


我被另一篇文章弄糊涂了。任何在这方面有经验的人都可以解决问题。

您似乎缺少随附的文件。尝试安装/重新安装compact framework

@Hi user779444,您实现屏幕捕获的方法很复杂,您可以通过剪贴板将密钥发送到用户计算机上的虚拟快照密钥以获取屏幕图像。顺便问一下,你打算对捕获的图像做些什么?嗨@Pevus,我已经尝试过这种方法,但是用了一个不稳定的代码。