黑莓中像素与点的关系

时间:2014-01-31 10:27:43

标签: blackberry pixel point blackberry-simulator

我需要知道点和像素之间的关系以及它如何影响不同的BB 7.0和更低版本的设备。

我有一个项目,它解析要以点显示的组件的宽度和高度值,我已将它们转换为像素,并使用以下公式显示在不同的设备上。

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

其中fldwidth和fldheight的值最初具有十进制的pt值。

我是否正确

1 个答案:

答案 0 :(得分: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

<强>答案: 请注意,8520的屏幕尺寸为320 x 240.出于本讨论的目的,屏幕分辨率。知道了吗?

你想要57分的大小。所以计算是:

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

你不应该用数字替换Display.getHorizo​​ntalResolution() - 它在不同的设备上会有所不同,你不需要为自己修复这个值。

1米有多少分?您可以进行数学计算,将1/72英寸转换为米,然后将1米分开。或者您可以输入Google“一米多少分”并得到答案2,834.64567。我们不需要准确性,所以我们只使用整数运算来给出这个:

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

完成工作 - 这不是太难了吗?