2011-01-25 2 views
3

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

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

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

Другой из (50, 0) до (100, 50)

Третий из (0, 50) до (50, 100)

последний из (50, 50) до (100, 100)

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

Заранее спасибо за любую помощь

ответ

5

Чтобы создать текстуру из файла 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(); 
+0

Texture2D.FromStream идеально подходит для этого, спасибо – Tim

Смежные вопросы