裁剪Texture2D Spritesheet

Ent*_*ity 1 xna sprite-sheet

我正在开发一款有spritesheets的游戏,如下所示:

spritesheet的EG

我知道你什么时候spriteBatch.Draw(...)可以绘制图像的某个部分,但是对于我正在做的事情,我需要Texture2D每帧都有一个单独的对象.

我已经完成了谷歌搜索,但我能找到的只是过时的代码:/

UPDATE通过MJP发布的代码这里是非常接近我需要什么......不过,没有一个RenderTarget2D.GetTexture()在XNA 4.0功能.

Ent*_*ity 5

哇好吧...谷歌搜索发现了更多:

Texture2D tex = (Texture2D)renderTarget;
Run Code Online (Sandbox Code Playgroud)

只是一个简单的演员:)

这是我的最终代码:

    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;
    }
Run Code Online (Sandbox Code Playgroud)