调整大小的子画面不显示

本文关键字:显示 调整 | 更新日期: 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 时,您将看不到纹理。相反,将一个操作数转换为doublefloat

texture.Width * (screenHeight / (double)texture.Height)

将返回一个double,允许除法/乘法按预期工作。