2011-11-30 2 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

작품, 공유 주셔서 감사합니다. –