0

大きな画像 (1500x1000) をテクスチャに読み込んでいます。私の graphics.PreferredBackBufferWidth/Height は 800x600 です。drawRectangle を大きな画像と同じサイズに設定しています。

マウスが画面の端に向かって移動すると、sourceRectangle の x 座標と y 座標を変更して、マップをスクロールします。これはすべてうまくいっているようですが、私の写真は歪んでいます。sourceRectangle を削除して通常の drawRectangle を使用すると、歪んでいません。何か足りないものはありますか?

    SpriteBatch spriteBatch;
    Texture2D pic;
    Rectangle mapRectangle;
    Rectangle mapSourceRectangle;


    public Game1()
        : base()
    {
        graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";

        graphics.PreferredBackBufferWidth = 800;
        graphics.PreferredBackBufferHeight = 600;
        IsMouseVisible = true;
    }

...

pic = Content.Load<Texture2D>("map");
        mapRectangle = new Rectangle(0, 0, pic.Width, pic.Height);
        mapSourceRectangle = new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight);

そして最後に私がそれを描くとき。

spriteBatch.Draw(pic, mapRectangle, mapSourceRectangle, Color.White);
4

1 に答える 1

1

mapSourceRectangle はテクスチャの 800 x 600 セクションのみをソースとして使用し、mapRectangle (宛先) を使用してそれを 1500,1000 まで吹き飛ばしていると思います。sourceRectangle を削除すると、画像全体が正しいサイズで使用されます。

http://msdn.microsoft.com/en-us/library/ff433987.aspx

宛先長方形:

スプライトの描画先を (画面座標で) 指定する四角形。この四角形が元の四角形と同じサイズでない場合、スプライトは収まるようにスケーリングされます。

于 2013-10-21T04:51:02.617 に答える