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

时间:2009-09-17 14:27:58

标签: c# windows-vista screenshot game-development

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

目前,屏幕截图在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);

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:-2)

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

这是一个修复但很难。

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

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

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