Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#&;制作屏幕截图;新华社?_C#_Xna_Xna 4.0 - Fatal编程技术网

如何使用C#&;制作屏幕截图;新华社?

如何使用C#&;制作屏幕截图;新华社?,c#,xna,xna-4.0,C#,Xna,Xna 4.0,如何在全屏模式下运行游戏时,使用C#和XNA制作屏幕截图并将其保存到硬盘?这将向您展示如何拍摄屏幕截图。在本例中,它在每次渲染时都保存一幅图像,因此您只需将其移动到一个函数,以便在保存屏幕截图时调用该函数。该API是可用的 如果您在HiDef配置文件(Xbox 360和更新的Windows计算机)上运行,则可以使用GraphicsDevice.GetBackBufferData 为了方便保存数据,您可以使用将其输出放入Texture2D.SetData中,然后使用SaveAsPng或SaveAs


如何在全屏模式下运行游戏时,使用C#和XNA制作屏幕截图并将其保存到硬盘?

这将向您展示如何拍摄屏幕截图。在本例中,它在每次渲染时都保存一幅图像,因此您只需将其移动到一个函数,以便在保存屏幕截图时调用该函数。

该API是可用的

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

为了方便保存数据,您可以使用将其输出放入
Texture2D.SetData
中,然后使用
SaveAsPng
SaveAsJpeg
(这比需要的速度稍慢,因为它也会将数据发送回GPU,但这非常简单)


如果使用的是
Reach
配置文件,则必须将场景渲染为
RenderTarget2D
。我的代码应该给您一个很好的起点。

这里来看看这段代码

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();

但是,我想在运行时复制它,我没有像“ResolveTexture2D”这样的东西,并保存它,而不是打印。这个问题不是(那个问题的)副本。XNA 4.0中的API发生了变化,但答案不适用。如果我使用GraphicsDeviceManager,如何实现这一点?(我是初学者,很抱歉问了这么愚蠢的问题:)我不太明白你的问题。您正在寻找
图形设备管理员。图形设备
?你应该为这些事情负责。当然,如果您在从
Game
GameComponent
派生的类中,您可以直接访问它们。