C# 在XNA中拍摄屏幕截图

C# 在XNA中拍摄屏幕截图,c#,xna,screenshot,C#,Xna,Screenshot,如何在XNA中拍摄屏幕截图?没有System.Drawing.Graphics.CopyFromScreen或Win32API是否可能?如果不可能,有没有办法在游戏中绘制System.Drawing.Bitmap 我希望它将采取一个屏幕截图,然后在全屏模式加载游戏,然后打印屏幕截图 谢谢。 首先在游戏的LoadContent方法中创建ResolveTexture2D: renderTargetTexture = new ResolveTexture2D( graphics.Gra

如何在XNA中拍摄屏幕截图?没有
System.Drawing.Graphics.CopyFromScreen
或Win32API是否可能?如果不可能,有没有办法在游戏中绘制
System.Drawing.Bitmap

我希望它将采取一个屏幕截图,然后在全屏模式加载游戏,然后打印屏幕截图

谢谢。

首先在游戏的LoadContent方法中创建ResolveTexture2D:

renderTargetTexture = new ResolveTexture2D(
        graphics.GraphicsDevice,
        graphics.GraphicsDevice.PresentationParameters.BackBufferWidth,
        graphics.GraphicsDevice.PresentationParameters.BackBufferHeight, 1,
        graphics.GraphicsDevice.PresentationParameters.BackBufferFormat);
然后在绘制场景后,在绘制方法中解析后缓冲区:

graphics.GraphicsDevice.ResolveBackBuffer(renderTargetTexture);
最后,当游戏在绘制方法中暂停时,使用spritebatch绘制捕获的回缓冲区:

spriteBatch.Draw(renderTargetTexture, Vector2.Zero, Color.White);

如果您希望图像为灰度级,则需要编写一个像素着色器,并在LoadContent中加载效果文件,然后在使用spritebatch绘制纹理之前设置效果。

它不起作用,只是显示默认的XNA蓝色Cornflower蓝色屏幕。问题在于您的最终,就我所知,这些代码很好。我以后如何保存这个屏幕截图?你是想在游戏加载之前拍摄系统的屏幕截图,还是在游戏运行时拍摄游戏的屏幕截图?在游戏加载之前拍摄系统的屏幕截图