我想制作一个安卓游戏框架,我想通过在16:9固定配给,通过采用一些屏幕边和使其在所有可能的屏幕分辨率 上工作如果比例不是16:9,那么将它们设为空白,我似乎无法做到背后的数学。将分辨率固定为16:9
我试图做一个循环,每次迭代都要减去一个循环,并检查比例是否等于16:9,但是双倍分区将其变成无限循环,因为例如1920:1080!= 16:9
所以任何人都可以给我一个更好的方式来做到这一点?
或者你甚至建议一个资源,提供一个更好的解决办法比做空白的两面?
我想制作一个安卓游戏框架,我想通过在16:9固定配给,通过采用一些屏幕边和使其在所有可能的屏幕分辨率 上工作如果比例不是16:9,那么将它们设为空白,我似乎无法做到背后的数学。将分辨率固定为16:9
我试图做一个循环,每次迭代都要减去一个循环,并检查比例是否等于16:9,但是双倍分区将其变成无限循环,因为例如1920:1080!= 16:9
所以任何人都可以给我一个更好的方式来做到这一点?
或者你甚至建议一个资源,提供一个更好的解决办法比做空白的两面?
理想情况下,您希望使用的宽度尽可能接近您想要的16:9比例的'16'。
让我们的小480x320的例子...
如果分割480/16结果是完全30乘以30 * 9是270。这意味着你可以使用480的全宽,但你需要调整高度为270小于320.
屏幕高度为320像素,但所需高宽比为16:9,则需要创建空白顶部和底部边距,总计为320 - 270 = 50。为了得到相等的边缘高度,除以2.
因此...
十六分之四百八十零= 30
30 * 9 = 270
320 - 270 = 50
50/2 = 25
基本上可以使用全屏幕宽度,但添加一顶部和每个底部边距为25像素。
编辑:现在让我们假设你有一个不寻常的屏幕尺寸例如500x320(不太可能,但谁知道?)。
在这种情况下,我们需要知道的模数(余数)是什么,当我们把16个屏幕宽度...
int xPixels = 500; // Physical number of pixels on X axis
int yPixels = 320; // Physical number of pixels on Y axis
int leftMargin = 0;
int topMargin = 0;
// In the case of 500 width, the remainder will be 4 pixels
// because 500/16 is 31 with a remainder of 4.
int remainder = xPixels % 16;
// Check to see if the remainder is 0. If it's not then we need a left margin...
if (remainder != 0)
leftMargin = remainder/2;
// Now calculate height of the image
int imageHeight = xPixels/16 * 9;
// Now check if image height is the same as the physical screen height
// if it's not then calculate the top margin
if (imageHeight != yPixels)
topMargin = (yPixels - imageHeight)/2;
与上面的代码,你应该能够调整屏幕基于顶部和左侧边距的位置。
非常感谢!这是我想要的,但还剩一件事。没有比16:9更宽的分辨率吗? 也就是说,是否有任何需要修剪宽度而不是高度以获得16:9分辨率的分辨率? – 2014-09-05 01:20:24
@HassanKhallouf:希望我的编辑显示一些代码将覆盖不同的物理屏幕像素,并计算顶部和左侧边距以调整图形窗口的位置。 – Squonk 2014-09-05 07:32:00
你是伟大的男人不能投票你就够了! – 2014-09-05 07:34:04
我不确定你的代码有什么问题,只是通过在我的脑海中进行分割和乘法运算,我可以告诉你1920x1080 * IS *是一个16:9的宽高比。 1920除以16是120,120乘以9就是1080. – Squonk 2014-09-04 20:01:52
这是真的我的朋友我用一个不好的例子来证明我的观点,这对所有尝试16:9的分辨率都是真实的,但是当它是4:3时,请说480:320,当试图减少循环中的320时,直到它达到该比例,它将永远不会完全是1.77777777,这是对1920/1080 的回答,它可能是1.777777778,无限循环 – 2014-09-04 20:09:59
我还是不明白你的问题。如果您只想显示宽高比为16:9的图像,则只需以像素为单位获取物理屏幕宽度,然后除以16(四舍五入为最接近的整数),然后乘以9乘以高度。然后,您只需从实际宽度和高度值中减去这些宽度和高度值,除以2,然后使用各自的值作为上/下/左/右的边距。 – Squonk 2014-09-04 20:17:53