如何计算屏幕分辨率变化

时间:2010-10-01 19:41:55

标签: algorithm windows-mobile resolution screen-resolution

我有一个移动设备上的应用程序。我正在将我的应用程序的分辨率从240W x 320L移动到640W X 480L。

我有一堆宽度以像素为单位的列(例如55)。我需要将其转换为新的分辨率。

“轻松”,我认为640/240 = 2 2/3。所以我只拿55 * 2.6666667这是我的新宽度。

唉,这没用。我的专栏(全部在一起)现在大于我的屏幕尺寸。

我尝试了55 * 2,这太小了。我确信我可以通过试验找到错误,但我想知道确切的比例。

那么,我错过了什么?如何计算新的列宽(除了试错之外)。

3 个答案:

答案 0 :(得分:2)

我认为你的逻辑很好,但也许你有舍入错误?如果要确保总宽度小于屏幕分辨率,则在乘以比例因子后,应始终向下舍入到最接近的整数以获得宽度(以像素为单位)。

此外,如果您的列之间有任何填充,边框或其他空格,您也必须考虑到这一点。

如果您可以在桌面环境中运行,我知道有一些“像素标尺”工具可以在屏幕上实际测量内容,您可以在Google上搜索它们。

答案 1 :(得分:2)

分辨率变化时屏幕DPI正在改变。所以你需要考虑到这一点 检查this link about DPI Aware apps并根据您的平台(Native或CF)进行搜索

答案 2 :(得分:2)

舍入是你的问题;假设您在240像素显示屏上有24列10像素。您计算新宽度:10 * 2.667 = 27,因此总宽度总和为:648> 640.糟糕......

要实现此目的,您需要缩放列的绝对位置。也就是说,如果列号k在x坐标= X上开始,那么在缩放之后它应该在圆形(X * 2.667)上开始。在此之后,从左侧X的圆形减去圆形右侧X以获得宽度。通过这种方式,您可以向下舍入宽度,有些向上,但总宽度将保持在您的限制范围内。