调整大小的子画面不显示
本文关键字:显示 调整 | 更新日期: 2023-09-27 18:34:22
我正在尝试根据屏幕高度调整图像大小,但遇到了麻烦。目前的问题是图像根本没有显示。这是代码:
class Board
{
private Texture2D texture;
private int screenWidth = Game1.Instance.GraphicsDevice.Viewport.Width;
private int screenHeight = Game1.Instance.GraphicsDevice.Viewport.Height;
private Vector2 location;
private Rectangle destination;
public Board(Texture2D texture)
{
this.texture = texture;
this.location = new Vector2(200, 0);
this.destination = new Rectangle((int)location.X, (int)location.Y, texture.Width * (screenHeight / texture.Height), screenHeight);
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Begin();
spriteBatch.Draw(texture,
destination,
Color.White);
spriteBatch.End();
}
}
图像之前已经显示过,尽管仍然太宽,所以我知道主循环中的代码很好。所以我的问题是...这段代码有什么问题,有没有更好的方法?
texture.Width * (screenHeight / texture.Height)
正在使用整数除法。如果纹理大于屏幕,它将返回 0。宽度为 0 时,您将看不到纹理。相反,将一个操作数转换为double
或float
:
texture.Width * (screenHeight / (double)texture.Height)
将返回一个double
,允许除法/乘法按预期工作。