2011-11-30 75 views
1

我正在開發一個遊戲,這將有spritesheets,就像這樣:作物的Texture2D Spritesheet

E.G of spritesheet

我知道,當你做你spriteBatch.Draw(...)可以繪製圖像的某一部分,而是爲我」在做,我需要有一個單獨的Texture2D對象每幀。

我已經做了谷歌搜索,但所有我能找到的是過時的代碼:/

UPDATE發表MJP here的代碼是非常接近我需要什麼......不過,沒有一RenderTarget2D.GetTexture()函數在XNA 4.0中。

回答

5

哇確定...一大堆更多的谷歌搜索發現:

Texture2D tex = (Texture2D)renderTarget; 

只是一個簡單的投:)

這是我的最終代碼:

public static Texture2D Crop(Texture2D image, Rectangle source) 
    { 
     var graphics = image.GraphicsDevice; 
     var ret = new RenderTarget2D(graphics, source.Width, source.Height); 
     var sb = new SpriteBatch(graphics); 

     graphics.SetRenderTarget(ret); // draw to image 
     graphics.Clear(new Color(0, 0, 0, 0)); 

     sb.Begin(); 
     sb.Draw(image, Vector2.Zero, source, Color.White); 
     sb.End(); 

     graphics.SetRenderTarget(null); // set back to main window 

     return (Texture2D)ret; 
    } 
+1

工程就像一個魅力,感謝分享 –