Создайте спрайт XNA на лету из изображения - PullRequest
3 голосов
/ 25 января 2011

У меня есть изображение, скажем, .png, загруженное пользователем.Это изображение имеет фиксированный размер, скажем, 100x100.

Я хотел бы создать 4 спрайта с этим изображением.

Один от (0,0) до (50,50)

Другое от (50, 0) до (100, 50)

Третье от (0, 50) до (50, 100)

Последнее от (50, 50)на (100, 100)

Как я могу это сделать с моим предпочтительным C #?

Заранее благодарен за любую помощь

1 Ответ

5 голосов
/ 25 января 2011

Чтобы создать текстуру из файла PNG, используйте метод Texture2D.FromStream() ( MSDN ).

Чтобы нарисовать различные участки текстуры, используйте параметр sourceRectangle, чтобыперегрузка SpriteBatch.Draw, которая его принимает ( MSDN ).

Вот пример кода:

// Presumably in Update or LoadContent:
using(FileStream stream = File.OpenRead("uploaded.png"))
{
    myTexture = Texture2D.FromStream(GraphicsDevice, stream);
}

// In Draw:
spriteBatch.Begin();
spriteBatch.Draw(myTexture, new Vector2(111), new Rectangle( 0,  0, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(222), new Rectangle( 0, 50, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(333), new Rectangle(50,  0, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(444), new Rectangle(50, 50, 50, 50), Color.White);
spriteBatch.End();
...