2014-01-31 18 views
0

我需要知道點與像素之間的關係以及它如何影響不同的BB 7.0和更低版本的設備。像素與黑莓中的點之間的關係

我有一個項目,分析組件的寬度和高度值顯示在點中,我已經將它們轉換爲像素,並使用下面的公式顯示在不同的設備上。

fldwidth = fldwidth*Display.getWidth()/100 
fldheight = fldheight*Display.getHeight()/100 

其中fldwidth和fldheight的最初的值具有十進制角值。

我是正確

回答

1

的一點是,根據定義,1/72英寸 - 維基百科看到Point_(typography)

像素的大小依賴於設備上的屏幕分辨率。要清楚的是,這通常是以每英寸點數(dpi)表示的分辨率。這是而不是術語分辨率的常見用法,即屏幕的像素高度和寬度。人們以這種方式使用分辨率錯誤地。分辨率是屏幕上點的密度,而不是屏幕上的像素數。

這裏的要點是屏幕上顯示的像素數量與點所需的像素數量之間沒有任何關係。您不能使用您嘗試的轉換。

要確定匹配1點的像素數量,您必須獲得屏幕分辨率。 BB爲此提供了兩種方法:

Display.getHorizontalResolution(); 
Display.getVerticalResolution(); 

幸運的是,這些都會給你所有BBOS(Java)的設備相同的值,因爲所有BBOS設備具有相同的垂直和水平分辨率。

提供的值是一米內的像素數。因此,您需要做的是確定1米內有多少1/72英寸,將這些值中的一個除以該數字,然後獲得一個點中的像素數量。

由於整數算術,在做這個計算時,我會乘以你在分割前試圖達到的點大小。例如:

int pixelSizeReqd = pointSizeReq * 
Display.getHorizontalResolution()/pointsInOneMetre; 

順便說一下,只需要調用Display.getHorizo​​ntalResolution()一次,重用返回的值。我不確定getHorizo​​ntalResolution(),但我知道某些Display方法,例如getHeight()和getWdith()是'昂貴的',所以應儘可能避免。無論如何,價值不會改變!

更新以下評論: 你可以在一個例子中解釋。假設我有一個設備8520(320x240分辨率),我有一個點(比如說57pt)根據你的公式,其相應的像素值是多少... int pixelSizeReqd = pointSizeReq * Display.getHorizo​​ntalResolution()/ pointsInOneMetre

Answer : 請注意,8520的屏幕尺寸爲320 x 240.也就是而不是其屏幕分辨率用於本次討論。瞭解?

你想要的大小爲57分。因此,計算公式爲:

int pixelSizeReqd = 57 * Display.getHorizontalResolution()/pointsInOneMetre; 

你不應該用數字代替Display.getHorizo​​ntalResolution() - 這將是在不同的設備不同,沒有必要爲你來嘗試解決這個值的自己。

1米有多少點?你可以做數學計算,將1/72英寸轉換成米,然後再除以1米。或者你可以輸入谷歌「一米多少分」,並得到答案2,834.64567。我們不需要精度,所以我們只用整數運算給我們這個:

int pixelSizeReqd = 57 * Display.getHorizontalResolution()/2834; 

工作完成 - 那不是太難嗎?

+0

你可以在一個例子中解釋。假設我得到了一個設備8520(320x240分辨率),我有一個點(比如57pt),根據你的公式,它的對應像素值是多少... int pixelSizeReqd = pointSizeReq * Display.getHorizo​​ntalResolution()/ pointsInOneMetre; – Yatin

+0

8520沒有320 x 240的屏幕分辨率,也就是它的屏幕尺寸。見上面的更新。 –