2014-01-31 1 views
0

포인트와 픽셀의 관계와 그것이 다른 BB 7.0 이하 버전 디바이스에 미치는 영향을 알아야합니다.블랙 베리의 픽셀과 포인트의 관계

필자는 점으로 표시 할 구성 요소의 너비와 높이 값을 파싱하고 다음 수식을 사용하여 픽셀로 변환하고 다른 장치에 표시하는 프로젝트를 가지고 있습니다. fldwidth 및 fldheight의 초기 값을 십진수로 PT 값을 갖는다

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

.

나는 정의에 의해,

답변

1

점이다를 해결 오전 1/72 인치 - 위키 백과 Point_(typography)

픽셀의 크기가 장치의 화면 해상도에 따라 달라집니다 참조하십시오. 그냥 분명히하기 위해, 이것은 일반적으로 인치당 도트 수 (dpi)로 명시된 해상도입니다. 이것은 이 아니고입니다. 해상도라는 용어는 화면의 픽셀 높이와 너비입니다. 사람들은 이런 방식으로 해상도를 사용합니다 입니다. 해상도는 화면의 픽셀 수가 아닌 화면의 도트 밀도입니다.

여기에 요점은 화면에 표시되는 픽셀 수와 점에 필요한 픽셀 수 사이에는 아무런 관계가 없다는 것입니다. 시도중인 변환을 사용할 수 없습니다.

1 포인트와 일치하는 픽셀 수를 확인하려면 화면 해상도를 얻어야합니다. 모든 BBOS 장치가 동일한 수직 및 수평 해상도를 가지고

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

다행히,이, 당신에게 모든 BBOS (자바) 장치에 동일한 값을 줄 것이다 : BB는이 두 가지 방법을 제공합니다.

제공된 값은 1 미터의 픽셀 수입니다. 1 미터에 1 인치의 1/72 인치가 몇 개인지를 결정하고,이 값 중 하나를 그 수로 나누면 한 점에 픽셀 수를 갖게됩니다.

정수 계산 때문에이 계산을 수행 할 때 나눗셈을 수행하기 전에 달성하려는 포인트 크기를 곱합니다. 예를 들어 :

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

그건 그렇고, 한 번만) Display.getHorizontalResolution을 (호출하고 반환 된 값을 다시 사용합니다. getHorizontalResolution()에 대해서는 확신 할 수 없지만, 일부 Display 메서드 (예 : getHeight() 및 getWdith())는 '비싸기'때문에 가능하면 피해야합니다. 값은 어쨌든 변하지 않을 것입니다!

다음 댓글에 대한 업데이트 : 예를 들어 설명해 주시겠습니까? 내가 점을 가지고 내가 장치 8520 (320 × 240 해상도)를 가지고 가정 수식 ... INT pixelSizeReqd = pointSizeReq * Display.getHorizontalResolution()에 따라 해당 픽셀 값을 어떻게 될지/pointsInOneMetre

대답 (57pt 말) : 8520의 화면 크기는 320 x 240입니다.이 설명에서는 화면 해상도가 이 아닌입니다. 알았어?

크기는 57 점이 필요합니다. 그래서 계산은 다음과 같습니다 당신은 그림과 Display.getHorizontalResolution()를 대체해서는 안

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

- 서로 다른 장치에 다른 것입니다 그리고 당신은 자신을 위해이 값을 수정하려고 할 필요는 없다.

1 미터에 몇 개의 포인트가 있습니까? 당신은 수학을 할 수 있고 1/72 인치를 미터로 변환 한 다음 이것으로 1 미터를 나눌 수 있습니다. 또는 Google에 "한 점에 몇 점"을 입력하고 응답을 2,834.64567로 할 수 있습니다. 정확성이 필요하지 않으므로 정수 계산을 사용하면 다음과 같이 계산할 수 있습니다.

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

작업 완료 - 그다지 어렵지 않았습니까?

+0

예를 들어 설명해 주시겠습니까? 장치 8520 (320x240 해상도)을 가지고 있다고 가정합니다. 수식 당 해당 픽셀 값이 될 점 (예 : 57pt)이 있습니다. int pixelSizeReqd = pointSizeReq * Display.getHorizontalResolution()/pointsInOneMetre; – Yatin

+0

8520의 화면 해상도는 320 x 240, 즉 화면 크기가 아닙니다. 위의 업데이트를 참조하십시오. –