문제

Windows 아래의 화면에 대한 DPI를 얻을 때 (:: getDeviceCaps를 사용하여) 수평 값은 항상 수직과 동일합니까? 예를 들어:

HDC dc = ::GetDC(NULL);
const int xDPI = ::GetDeviceCaps(dc, LOGPIXELSX);
const int yDPI - ::GetDeviceCaps(dc, LOGPIXELSY);
assert(xDPI == yDPI);
::ReleaseDC(NULL, dc);

이 값이 다른가요?

도움이 되었습니까?

해결책

다르게 가능하지만 일반적으로 프린터에만 적용됩니다. 화면은 항상 동일한 수평 및 수직 DPI를 가지고 있다고 안전하게 가정 할 수 있습니다.

다른 팁

나는 그들이 다르게 본 적이 없지만 이것 MSDN 페이지 나는 그들이 다음과 같은 것을 암시하는 의견을 봅니다.

   int nHorz = dc.GetDeviceCaps(LOGPIXELSX);
   int nVert = dc.GetDeviceCaps(LOGPIXELSY);

   // almost always the same in both directions, but sometimes not!

나는 그들이 다른 경우를 본 적이 없지만, 두 개의 별도의 요구가 있다는 사실은 때때로 그들이있을 수 있음을 강력하게 제안합니다.

모니터가 16 : 9 디스플레이에서 1600x1200과 같은 4 : 3 해상도와 같은 물리적 스크린 비율과 같지 않은 화면 해상도 비율을 사용하도록 설정된 경우 쉽게 다를 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top