2016-11-14 97 views
0

我试图创建的“游戏”在屏幕上同时有许多按钮和图像,并且按钮是为底座(我相信是800x600)控制台大小而设计的。按钮和精灵都在设定的位置。缩放所有图像到控制台大小XNA

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

在搜索答案的过程中,我发现了许多可以根据纵横比缩放个别图像或缩放它们的方法,但我所要做的是缩放所有图像,无论纵横比如何,取决于实际尺寸XNA窗口。例如,如果我在800x600屏幕上放置3个100x60的精灵和2个200x90的精灵,如果将窗口大小更改为1980x720而无需操作每个图像,如何将精灵的大小更改为相同的相对大小?

感谢

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

回答

0

我已经解决了我一直在使用ScaleMatrix的问题,因为之前我错误地使用了它们。我之前使用的是(800,600)的矩阵,但现在(我现在无法访问环境,所以它必须是伪)我已经更改了代码,所以它的变量比例:

(F)的XScale = 800/Viewport.Width

(F)Yscale = 600/Viewport.Height

Matrix.createScale(XScale的,YScale,1,1)

我然后将其传递给Spritebatch.Begin。问题是,如果你有东西渲染到一个三角形(如背景),那么你可能希望在不同的spritebatch中渲染它。由于这个尺度会混淆三角形。

我有一个背景矩形,它将比例应用到屏幕上。它很好,如果它是你想要缩放的东西,比如一个矩形按钮。