Изменить размер и загрузить texture2d в XNA - PullRequest
6 голосов
/ 03 декабря 2010

Я новичок в XNA на всякий случай.То, что я пытаюсь сделать, это загрузить текстуру, отличную от его оригинала, или, по крайней мере, иметь возможность изменить его размер после.В некоторых местах я вижу, что я могу использовать:

Texture2D.FromStream(GraphicsDevice graphicsDevice, Stream stream, 
                 int width, int height, bool zoom)

Но я также читал, что загрузка текстур таким образом игнорирует ContentManager и что я усложняю работу сборщика мусора.1004 *

Как правильно загрузить изображение любого размера, используя ContentManager?Если это невозможно, могу ли я пропорционально изменить его размер, как при использовании зума?

Контекст: я создаю доску nxn мир.Когда n слишком велико, мне нужно, чтобы миры автоматически становились все меньше.

Ответы [ 2 ]

10 голосов
/ 03 декабря 2010

Для загрузки текстуры:

Texture2D tex = Content.Load<Texture2D>("somefile");

Чтобы изменить его размер, используйте одну из перегрузок SpriteBatch, которая принимает «масштабирование» http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.spritebatch.draw.aspx

float scale = .5f; //50% smaller
SpriteBatch.Draw(tex, position, source, Color.White, rotation, scale, SpriteEffects.None, 0f);

Если вы новичок в XNA, я предлагаю вам прочитать этот короткий учебник , а также проверить Каталог образовательных программ на сайте create.msdn.com

1 голос
/ 19 января 2017
Texture2D texture;
protected override void LoadContent()
        {
...
         texture = Content.Load<Texture2D>("Tank");
...
        }
protected override void Draw(GameTime gameTime)
        {
...
         Rectangle destinationRectangle = new Rectangle(100, 100, 30, 10);
         spriteBatch.Draw(texture, destinationRectangle, Color.White);
...
         spriteBatch.End();
         base.Draw(gameTime);
        }
...