2009-11-21 151 views
4

如何在XNA中拍攝屏幕截圖?沒有System.Drawing.Graphics.CopyFromScreen或Win32API可能嗎?如果不可能,是否有任何方法可以將System.Drawing.Bitmap繪製到遊戲中?在XNA中拍攝屏幕截圖

我想要它將採取屏幕截圖,然後以全屏模式加載遊戲,然後打印屏幕截圖。

謝謝。

+0

想要在遊戲加載之前截取系統*的截圖,或者在遊戲運行時截取遊戲截圖? – 2009-11-25 16:38:12

+0

遊戲加載前系統的截圖 – 2009-11-25 19:51:06

回答

4

http://www.gamedev.net/community/forums/topic.asp?topic_id=537265&whichpage=1&#3469331

首先在你的遊戲的LoadContent方法創建一個ResolveTexture2D:

renderTargetTexture = new ResolveTexture2D(
     graphics.GraphicsDevice, 
     graphics.GraphicsDevice.PresentationParameters.BackBufferWidth, 
     graphics.GraphicsDevice.PresentationParameters.BackBufferHeight, 1, 
     graphics.GraphicsDevice.PresentationParameters.BackBufferFormat); 

然後解決您的Draw方法後緩衝區繪製場景後:

graphics.GraphicsDevice.ResolveBackBuffer(renderTargetTexture); 

最後,當您的遊戲在Draw方法中暫停時,使用spritebatch繪製捕獲的後臺緩衝區:

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

如果您希望圖像是灰度圖,您需要編寫像素着色器並在LoadContent中加載效果文件,然後在使用spritebatch繪製紋理之前設置效果。

+0

它不工作,它只是顯示默認的XNA藍色CornflowerBlue屏幕。 – 2009-11-21 12:14:35

+0

問題是你的結局,就我所見,該代碼沒有問題 – Martin 2009-11-24 14:15:01

+1

之後我將如何保存此屏幕截圖? – 2011-12-24 11:08:36