游戏时在Vista和Win7中的空白截图

我注意到另一个人也请求帮助。 我读了那篇文章,似乎还没有解决。 我也尝试从我的代码更改为“2次点击屏幕截图”post中的代码,但是在我的代码中实现这个代码由于某种原因搞砸了我的所有其他代码。

目前,屏幕截图在Win XP中完美呈现。 在Vista和Win7中,除非游戏以窗口模式播放,否则它们会显示空白。 我希望有人可以帮助我们,因为这是完成我们的计划的最后一步,如果没有修复这个问题,我们无法完成。

我用于屏幕截图的C#代码如下。

Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb); Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot); gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy); 

我猜你会尝试使用硬件加速表面的普通屏幕缓冲区来截取屏幕截图。 你的Windows XP结果可能是一个侥幸:一个独特或非优化的video配置(如果你尝试截取video的截图,你可能会得到相同的结果 – 一个大的黑色,棕色或粉红色矩形,其中video卡插入加速帧缓冲区)。

您需要关闭系统video加速(兼容模式,其中所有内容都呈现给软件屏幕缓冲区),这是一个系统范围的设置,或更改您的屏幕截图代码直接使用您正在使用的图形API(DirectX,OpenGL ) – 代码完全取决于您用于渲染的API /方法。

除了这句话之外,上面的答案是完全错误的“改变你的截图代码直接使用你正在使用的图形API(DirectX,OpenGL)”

这是一个修复,但很难。

你的问题是游戏是在vista和win7的不同表面上渲染的。

您需要挂钩图形(DirectX,OpenGL)或者您需要尝试DWM屏幕捕获。

对于xp,“点击2次点击”为我带来了大约2000次点击,无数个小时都在寻找答案。 根本没有详细记录(至少纯.net解决方案不是)