将所有图像缩放到控制台大小XNA

本文关键字:控制台 XNA 缩放 图像 | 更新日期: 2023-09-27 18:17:54

我尝试创建的"游戏"在屏幕上同时拥有许多按钮和图像,并且这些按钮是为基础(我认为是800x600)主机尺寸设计的。按钮和精灵都在设定的位置。

我遇到的问题是当我做isfullscreen=true时,试图让每个图像缩放。图像保持在它们的相对位置,但我需要它们根据窗口的实际大小进行"缩放"。

在寻找答案时,我发现许多缩放单个图像或根据宽高比缩放它们,但我试图做的是缩放所有图像,无论宽高比如何,取决于XNA窗口的实际大小。例如,如果我有3个100 × 60的精灵和2个200 × 90的精灵放在一个800 × 600的屏幕上,如果窗口大小改为1980 × 720而不需要操作每个图像,我该如何改变精灵的相对大小?

感谢

编辑:我试过使用一个比例矩阵,但这似乎需要我设置确切的大小的确切比例,这意味着我必须为每个可能的窗口大小创建一个不同的比例矩阵,这不是我想要实现的。

将所有图像缩放到控制台大小XNA

我已经修复了我一直在使用ScaleMatrix的问题,因为我之前错误地使用了它们。

之前,我使用(800,600)的矩阵,但现在(我现在没有访问环境,所以它必须在伪)我已经改变了代码,所以它是一个可变比例:

(f)XScale = 800/Viewport宽度

(f)Yscale = 600/Viewport。高度

矩阵。createScale(XScale, YScale, 1,1)

然后我将其传递给Spritebatch.Begin。问题是,如果你有渲染到三角形的东西(如背景),那么你可能希望在不同的spritebatch中渲染它。开始,因为这个比例会扰乱三角形。

我有一个背景矩形,它应用了比例,这使它离开了屏幕。如果它是您希望缩放的东西,例如按钮矩形,则可以。