如何使用C#& amp;进行截图XNA?

时间:2011-04-03 13:19:14

标签: c# xna xna-4.0


如何制作屏幕截图并使用C#& amp; XNA,在全屏模式下运行游戏?

3 个答案:

答案 0 :(得分:7)

API为changed in XNA 4.0

如果您在HiDef配置文件(Xbox 360和更新的Windows计算机)上运行,则可以使用GraphicsDevice.GetBackBufferData

为了便于保存数据,您可以使用将其输出放入Texture2D.SetData,然后使用SaveAsPngSaveAsJpeg(这比它需要的要慢一些,因为它也会将数据发送回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会向您展示如何截屏。在此示例中,它是每次渲染时保存图像,因此您只需将其移动到可以在保存屏幕截图时调用的函数。