我正在将大图像(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);