我注意到另一个人也请求帮助。我看了那篇帖子,似乎还没有解决。我也尝试从我的代码更改为“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);
答案 0 :(得分:4)
我猜你会尝试使用硬件加速表面的普通屏幕缓冲区来截取屏幕截图。你的Windows XP结果可能是一个侥幸:一个独特或非优化的视频配置(如果你尝试截取视频的截图,你可能会得到相同的结果 - 一个大的黑色,棕色或粉红色矩形,其中视频卡插入加速帧缓冲区。)
您需要关闭系统视频加速(将所有内容呈现到软件屏幕缓冲区的兼容模式),这是系统范围的设置,或者更改截屏代码以直接使用您正在使用的图形API( DirectX,OpenGL) - 其代码完全取决于您用于渲染的API /方法。
答案 1 :(得分:-2)
除了这句话之外,上面的答案是完全错误的“将你的截图代码更改为直接使用你正在使用的图形API(DirectX,OpenGL)”
这是一个修复但很难。
你的问题是游戏在vista和win7的不同表面上呈现。
您需要挂钩图形(DirectX,OpenGL)或者您需要尝试DWM屏幕捕获。
对于xp来说,“点击2次点击的屏幕”花了我大约2000次点击,无数个小时都在寻找答案。根本没有详细记录(至少纯.net解决方案不是)