Crop Texture2D Spritesheet
Я разрабатываю игру, в которой будут спрайт-листы, например:
Я знаю когда ты 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;
}