2013-05-15 1 views
5

장치의 DPI를 수신하는 두 가지 기능이있다Qt의 logicalDpiX와 physicalDpiX의 차이점은 무엇입니까? (전체 도색 간 엔티티로부터 유도 등 <code>QWidget</code>, <code>QPixmap</code> 등으로) <a href="http://qt-project.org/doc/qt-4.8/qpaintdevice.html" rel="nofollow"><code>QPaintDevice</code></a>의 설명서

int logicalDpiX() const; 
int physicalDpiX() const; 

int logicalDpiY() const; 
int logicalDpiX() const; 

문서는

말한다

logicalDpiX() 및 logicalDpiY() 함수는 장치의 가로 및 세로 해상도를 인치당 도트 수로 반환합니다. physicalDpiX() 및 physicalDpiY() 함수는 또한 장치의 해상도를 인치당 도트 수로 반환하지만 논리 및 실제 해상도가 다를 경우 해당 QPaintEngine이 매핑을 처리해야합니다. 마지막으로 colorCount() 함수는 페인트 장치에 사용할 수있는 다양한 색상의 수를 반환합니다.

이 설명에도 불구하고, 나는 아직도 차이점의 목적이 무엇인지 이해하지 못합니다. 누군가가 이것에 대해 밝혀 줄 수 있습니까?

답변

7

나는 physical이 장치의 실제 해상도라고 가정하고 logical은 사용자가 os 환경 설정에서 설정 한 것입니다. 이것은 망막이나 다른 고해상도 디스플레이에서 인기가 있습니다. 픽셀의 실제 점을 사용하면 모든 것이 너무 작아집니다. 다른 모니터에 너무 작은 수 있습니다 하나 개의 모니터 에 읽을 수있는 실제 픽셀 크기는 다를 http://msdn.microsoft.com/en-us/library/windows/apps/ff684173

때문에, 텍스트 :

나는이 창 특정 정보를 발견했다. 또한 사람마다 환경 설정이 달라 일부 사용자는 큰 텍스트를 선호합니다. 이러한 이유로 Windows 을 사용하면 사용자가 DPI 설정을 변경할 수 있습니다. 예를 들어, 사용자 이 디스플레이를 144 DPI로 설정하면 72 포인트 글꼴은 144 픽셀 높이가됩니다. 표준 DPI 설정은 100 % (96 DPI), 125 % (120 DPI) 및 150 % (144 DPI)입니다. 사용자는 또한 사용자 정의 설정을 적용 할 수 있습니다. Windows 7부터는 DPI는 사용자 별 설정입니다.

더 나은 : QT docs :

인치 당 물리적 ​​점 대 논리에 대한 참고 사항 : 실제 DPI는 실제 물리적 픽셀 크기 사용할 수 기반으로하며 인쇄 미리보기에 유용하고, 화면에 표시된 내용의 실제 크기가 정확히 인 것이 바람직한 다른 경우. 인치의 논리 도트는 크기의 글꼴 및 사용자 인터페이스 요소를 픽셀 크기로 변환하는 데 사용되며 실제 도트 수 ( )와 다를 수 있습니다. 인치당 논리 도트 수는 사용자가 전체 응용 프로그램에서 UI 및 글꼴 크기를 전체적으로 제어 할 수 있도록 데스크톱 환경 설정 패널에서 사용자가 설정할 수있는 경우가 있습니다.

0

나는 100 % 확실하지 않지만, 실제 해상도는 그림을 그리는 캔버스의 실제 해상도라고 생각합니다. 논리 해상도 - 프로그램에서 사용하는 해상도입니다. 예를 들어, 서로 다른 스크린을 다루기 위해서 디스플레이 (캔버스)의 물리적 인 해상도를 100 픽셀 당 논리적 인 해상도 100으로하고 예를 들어 고정 레이아웃을 사용한다고 말할 수 있습니다.재배치는 화가가 물리적 인 해상도를 사용하여 자동으로 수행합니다.

OpenGL은 이러한 방식으로 작동합니다. 먼저 모델, 뷰, 투영 행렬을 사용하여 모든 좌표를 [-1, 1] 범위 큐브로 변환하고이 좌표에서 계산을 수행 한 다음 나중에 실제 색상 버퍼에 매핑합니다.