如何制作屏幕截图并使用C#& amp; XNA,在全屏模式下运行游戏?
答案 0 :(得分:7)
API为changed in XNA 4.0。
如果您在HiDef
配置文件(Xbox 360和更新的Windows计算机)上运行,则可以使用GraphicsDevice.GetBackBufferData
。
为了便于保存数据,您可以使用将其输出放入Texture2D.SetData
,然后使用SaveAsPng
或SaveAsJpeg
(这比它需要的要慢一些,因为它也会将数据发送回GPU - 但它只是 easy )。
如果您使用的是Reach
个人资料,则必须将您的场景渲染为RenderTarget2D
。我的answer here应该给你一个很好的起点。
答案 1 :(得分:4)
这里看一下这段代码。
count += 1;
string counter = count.ToString();
int w = GraphicsDevice.PresentationParameters.BackBufferWidth;
int h = GraphicsDevice.PresentationParameters.BackBufferHeight;
//force a frame to be drawn (otherwise back buffer is empty)
Draw(new GameTime());
//pull the picture from the buffer
int[] backBuffer = new int[w * h];
GraphicsDevice.GetBackBufferData(backBuffer);
//copy into a texture
Texture2D texture = new Texture2D(GraphicsDevice, w, h, false, GraphicsDevice.PresentationParameters.BackBufferFormat);
texture.SetData(backBuffer);
//save to disk
Stream stream = File.OpenWrite(counter + ".jpg");
texture.SaveAsJpeg(stream, w, h);
stream.Dispose();
texture.Dispose();
答案 2 :(得分:0)
此answer会向您展示如何截屏。在此示例中,它是每次渲染时保存图像,因此您只需将其移动到可以在保存屏幕截图时调用的函数。