Crop Texture2D Spritesheet

Я разрабатываю игру, в которой будут спрайт-листы, например:

E.G спрайт-листа

Я знаю когда ты spriteBatch.Draw(...) Вы можете нарисовать определенную часть изображения, но для того, что я делаю, мне нужно иметь отдельный Texture2D объект на кадр.

Я сделал поиск в Google, но все, что я могу найти, это устаревший код:/

ОБНОВЛЕНИЕ Код, размещенный здесь MJP, - почти то, что мне нужно... однако, нет RenderTarget2D.GetTexture() функция в XNA 4.0.

1 ответ

Решение

Ух ты хорошо... Появилось намного больше поисков в 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;
    }
Другие вопросы по тегам