1

次のように、スプライトシートを持つゲームを開発しています。

スプライトシートのEG

画像の特定の部分を描画できることはわかっていspriteBatch.Draw(...)ますが、私がやっていることについては、Texture2Dフレームごとに個別のオブジェクトが必要です。

私はGoogle検索を行いましたが、私が見つけることができるのは古いコードだけです:/

更新ここに MJP によって投稿されたコードは、私が必要としているものに非常に近いものです...ただし、RenderTarget2D.GetTexture()XNA 4.0 には機能がありません。

4

1 に答える 1

5

うわー、わかりました...さらに多くのGoogle検索が明らかになりました:

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;
    }
于 2011-11-30T19:36:35.207 に答える