2014-09-04 145 views
0

我想制作一个安卓游戏框架,我想通过在16:9固定配给,通过采用一些屏幕边和使其在所有可能的屏幕分辨率 上工作如果比例不是16:9,那么将它们设为空白,我似乎无法做到背后的数学。将分辨率固定为16:9

我试图做一个循环,每次迭代都要减去一个循环,并检查比例是否等于16:9,但是双倍分区将其变成无限循环,因为例如1920:1080!= 16:9

所以任何人都可以给我一个更好的方式来做到这一点?

或者你甚至建议一个资源,提供一个更好的解决办法比做空白的两面?

+0

我不确定你的代码有什么问题,只是通过在我的脑海中进行分割和乘法运算,我可以告诉你1920x1080 * IS *是一个16:9的宽高比。 1920除以16是120,120乘以9就是1080. – Squonk 2014-09-04 20:01:52

+0

这是真的我的朋友我用一个不好的例子来证明我的观点,这对所有尝试16:9的分辨率都是真实的,但是当它是4:3时,请说480:320,当试图减少循环中的320时,直到它达到该比例,它将永远不会完全是1.77777777,这是对1920/1080 的回答,它可能是1.777777778,无限循环 – 2014-09-04 20:09:59

+1

我还是不明白你的问题。如果您只想显示宽高比为16:9的图像,则只需以像素为单位获取物理屏幕宽度,然后除以16(四舍五入为最接近的整数),然后乘以9乘以高度。然后,您只需从实际宽度和高度值中减去这些宽度和高度值,除以2,然后使用各自的值作为上/下/左/右的边距。 – Squonk 2014-09-04 20:17:53

回答

4

理想情况下,您希望使用的宽度尽可能接近您想要的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; 

与上面的代码,你应该能够调整屏幕基于顶部和左侧边距的位置。

+0

非常感谢!这是我想要的,但还剩一件事。没有比16:9更宽的分辨率吗? 也就是说,是否有任何需要修剪宽度而不是高度以获得16:9分辨率的分辨率? – 2014-09-05 01:20:24

+1

@HassanKhallouf:希望我的编辑显示一些代码将覆盖不同的物理屏幕像素,并计算顶部和左侧边距以调整图形窗口的位置。 – Squonk 2014-09-05 07:32:00

+1

你是伟大的男人不能投票你就够了! – 2014-09-05 07:34:04