2010-10-01 80 views
0

我有一個在移動設備上的應用程序。我正在將我的應用程序的分辨率從240W x 320L移動到640W x 480L。如何計算屏幕分辨率變化

我有一堆列的像素寬度(例如說55)。我需要將其轉換爲新的分辨率。

「簡單」,我認爲640/240 = 2 2/3。所以我只需要55 * 2.6666667,這是我的新寬度。

唉,那沒用。我的列(全部一起)現在大於我的屏幕大小。

我試過55 * 2,那太小了。我確信我可以通過試用到達那裏,但我想知道確切的比例。

那麼,我錯過了什麼?我如何計算新的列寬(除了通過試驗和錯誤)。

回答

2

我認爲你的邏輯很好,但也許你有舍入錯誤?如果要確保總寬度小於屏幕分辨率,請在乘以縮放係數後,總是舍入到最接近的整數以獲得以像素爲單位的寬度。另外,如果你的列有任何填充,邊框或者它們之間的其他空間,你也必須考慮到這一點。

如果你可以在桌面環境中運行,我知道有「像素標尺」類工具來實際測量屏幕上的東西,你可以在Google上搜索它們。

2

當分辨率改變時,屏幕DPI正在改變。所以你需要考慮到這一點。
檢查this link about DPI Aware apps並根據您的平臺進行搜索(Native或CF)

+0

豈不DPI只能是重要的,如果我們關心的列的實際物理尺寸是多少?這聽起來像OP在像素空間這裏工作。 – WildCrustacean 2010-10-01 20:39:26

2

舍入是您的問題;假設您在240像素顯示器上有24列10像素。你計算新的寬度:10 * 2.667 = 27,所以總寬度款項:648> 640抱歉...

得到這個權利,你需要擴展的列的絕對位置。也就是說,如果列號k從x座標= X開始,那麼在縮放之後它應該從第(X * 2.667)開始。之後,從圓角左側X減去圓角右側X以獲得寬度。這樣你就可以將寬度縮小一些,但是總寬度仍然會保持在你的極限內。