【发布时间】:2013-12-04 14:16:24
【问题描述】:
我在这个网站上找到了很多答案,但不幸的是,没有任何东西能解决我要描述的问题。
我设计了一个 800x520 横向模式的应用。所有资产都是使用该预定义的窗口大小设计的。我使用了单位制,但我认为这无关紧要。
现在,我有一个 85x70 大小的精灵/图像。无论真实设备的窗口/屏幕大小如何,我都希望它可以缩放但保持其原始纵横比。到目前为止,我有以下内容,它保持了比率但没有正确调整大小,这意味着如果设备屏幕的宽度和高度都大于我预定义的窗口大小,它显示精灵仍然很小。如果高度没有变化但只有宽度或宽度没有变化但只有高度,那很好。图像不应在 x 或 y 上缩放。但是下面的这个 sn-p 并不能完成这项工作。
float screenW = Screen.SCREEN_WIDTH; // Predefined width 800
float screenH = Screen.SCREEN_HEIGHT; // Predefined height 520
float deviceW = Gdx.graphics.getWidth(); // Actual device width that can vary
float deviceH = Gdx.graphics.getHeight(); // Actual device height that can vary
float changeX = screenW / deviceW; // Also tried deviceW / screenW
float changeY = screenH / deviceH; // Also tried deviceH / screenH
// I tried applying the changeX and changeY above
// in sprite's scale.x and scale.y respectively but no luck
// So I tried the below to get the new size of the sprite
// with and without applying scale above..
// Tried a lot of ways but no luck
float newWidth = (Sprite.WIDTH * changeX);
float newHeight = (Sprite.HEIGHT * changeY);
我不需要任何实际代码,只要我有正确的算法,我会很感激的。
【问题讨论】:
-
“不做这项工作”并没有给我们太多的帮助。给我们一些样本编号。屏幕高度/宽度是多少?设备的高度/宽度是多少?你得到的价值是什么,你期待什么?丹尼尔提供的答案应该有效,所以一定有其他事情你没有告诉我们。
-
@JimMischel 屏幕尺寸(800 宽 x 520 高 = 1.54 纵横比)。设备尺寸(1024 x 768 = 1.33 纵横比)。在设备中绘制圆形/正方形时,圆形/正方形不会保持比例并在 y 上按比例放大,实际上是应用 Daniel 下面给出的解决方案。圆变成椭圆。我得到答案中所示的比例因子,然后通过按所述相乘将其应用于圆形/方形纹理的宽度和高度。谢谢你。对不起,如果我仍然不清楚。
-
我为此编写了一个 jQuery 插件,它可能会有所帮助:stackoverflow.com/questions/18838963/…
标签: java algorithm scale aspect-ratio