1

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

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

“简单”,我认为 640/240 = 2 2/3。所以我只取 55 * 2.6666667 这就是我的新宽度。

唉,那没有用。我的列(全部)现在比我的屏幕尺寸大。

我试过 55 * 2 太小了。我确信我可以通过试错到达那里,但我想知道一个确切的比率。

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

4

3 回答 3

3

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

要做到这一点,您需要缩放列的绝对位置。也就是说,如果列号 k 从 x 坐标 = X 开始,那么在缩放后它应该从 round(X*2.667) 开始。在此之后从圆形左侧 X 中减去圆形右侧 X 以获得宽度。这样,您将向下和向上舍入宽度,但总宽度将保持在您的限制范围内。

于 2010-10-01T20:00:46.807 回答
2

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

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

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

于 2010-10-01T19:50:20.633 回答
2

当分辨率改变时,屏幕 DPI 也在改变。所以你需要考虑到这一点。
检查有关 DPI Aware 应用程序的链接并根据您的平台(本机或 CF)进行搜索

于 2010-10-01T19:54:06.173 回答