DPI 관련 API 및 레지스트리 설정
배포 사용자 지정을 수행해야 하는 경우 다음 섹션에서는 설치 후 스크립트가 액세스해야 할 수 있는 레지스트리 키 및 시스템 매개 변수에 대해 설명합니다.
문서 내용:
기본 디스플레이 네이티브 해상도
표 1: Windows 8.1 크기 조정 수준은 완전하지는 않지만 여러 일반 디스플레이용 Windows 8.1 크기 조정 수준에 대한 정보를 제공합니다. 패널 DPI는 패널의 물리적 픽셀 밀도를 나타내고, 크기 조정 수준은 이 디스플레이에 사용할 배율 인수를 나타냅니다.
테이블 1: Windows 8.1 크기 조정 수준
표시 크기 | 디스플레이 해상도 | 가로(픽셀) | 세로(픽셀) | 패널 DPI | 크기 조정 수준 |
---|---|---|---|---|---|
10.6" | FHD | 1920 | 1080 | 208 | 150% |
10.6" | HD | 1366 | 768 | 148 | 100% |
11.6" | WUXGA | 1920 | 1200 | 195 | 150% |
11.6" | HD | 1366 | 768 | 135 | 100% |
13.3" | WUXGA | 1920 | 1200 | 170 | 150% |
13.3" | QHD | 2560 | 1440 | 221 | 200% |
13.3" | HD | 1366 | 768 | 118 | 100% |
15.4" | FHD | 1920 | 1080 | 143 | 125% |
15.6" | QHD+ | 3200 | 1800 | 235 | 200% |
17" | FHD | 1920 | 1080 | 130 | 125% |
23" | QFHD(4K) | 3840 | 2160 | 192 | 200% |
24" | QHD | 2560 | 1440 | 122 | 125% |
모든 디바이스에 대해 이 정보를 프로그래밍 방식으로 찾으려면 데이터를 다시 보고하는 유틸리티 프로그램을 작성하면 됩니다. 네이티브 기본 해상도는 데스크톱용 hdc와 HORZRES 및 VERTRES 인덱스를 사용해 API GetDeviceCaps() 함수를 호출하여 검색됩니다.
// Get desktop dc
desktopDc = GetDC(NULL);
// Get native resolution
horizontalResolution = GetDeviceCaps(desktopDc,HORZRES);
verticalResolution = GetDeviceCaps(desktopDc,VERTRES);
GetDC에 대한 자세한 내용은 GetDC() 함수를 참조하세요.
기본 디스플레이 DPI 배율
마찬가지로 LOGPIXELSX 및 LOGPIXELSY 인덱스를 사용하여 픽셀 밀도를 가져올 수 있습니다.
// Get desktop dc
desktopDc = GetDC(NULL);
// Get native resolution
horizontalDPI = GetDeviceCaps(desktopDc,LOGPIXELSX);
verticalDPI = GetDeviceCaps(desktopDc,LOGPIXELSY);
이러한 결과는 표 2 DPI 배율에 표시된 것처럼 96이 100%에 해당하는 좌표계에서 반환됩니다.
표 2 DPI 배율
DPI | 배율 |
---|---|
96 | 100 |
120 | 125 |
144 | 150 |
192 | 200 |
참고
이 API는 애플리케이션의 DPI 인식 모드에 따라 다른 결과를 반환합니다. 인식 모드를 구성하려면 아래 설명된 대로 애플리케이션 매니페스트에 XML을 추가해야 합니다.
DPI 인식 모드 | 매니페스트 설정 | 반환 값 |
---|---|---|
없음 | 없음 | 배율에 관계없이 모든 디스플레이의 경우 96 |
시스템 DPI 인식 | <dpiAware>True</dpiAware> | Windows 세션이 시작된 시점(사용자가 Windows에 처음 로그인한 경우)의 기본 디스플레이의 DPI |
모니터별 DPI 인식 | <dpiAware>True/PM</dpiAware> | Windows 세션이 시작된 시점(사용자가 Windows에 처음 로그인한 경우)의 기본 디스플레이의 DPI입니다. 애플리케이션이 있는 디스플레이의 DPI를 가져오려면 GetWindowDpi() 또는 GetDpiForMonitor()를 사용합니다. |
이 매니페스트 설정에 대한 자세한 내용은 SetProcessDPIAware 함수를 참조하세요.
크기 조정 모드
제어판\모양 및 개인 설정\디스플레이 UI(사용자 인터페이스 표시)에는 확인란이 포함되어 있습니다. 내 모든 디스플레이에 대해 하나의 크기 조정 수준을 선택하겠습니다. 이는, 시스템이 모든 디스플레이에 단일 배율을 적용할지(Windows 8 및 이전 버전의 Windows에서와 같이) 또는 각 디스플레이의 픽셀 밀도를 고려한 다른 배율 인수를 적용할지 여부를 제어합니다(Windows 8.1 기본값). 이 확인란은 Windows 8.1에서 HKCU\Control Panel\Desktop\Win8DpiScaling 레지스트리 키를 구성합니다.
표 3 HKCU\Control Panel\Desktop\Win8DpiScaling 값
키 값 | 의미 |
---|---|
0 | 각 디스플레이에 대한 다양한 배율: Windows 8.1 기본값. 한 디스플레이에서 다른 디스플레이로 이동하는 콘텐츠는 적절한 크기이지만 비트맵 크기 조정이 가능합니다. |
1 | Windows 8 이전 Windows 버전 동작과 같은 동일한 배율이 모든 디스플레이에 적용됩니다. 한 디스플레이에서 다른 디스플레이로 이동하는 콘텐츠의 크기가 잘못되었을 수 있습니다. |
Windows 8.1 크기 조정 모드에서 크기 조정 재정의
내 모든 디스플레이에 대해 하나의 크기 조정 수준을 선택하도록 허용 확인란이 선택 취소되고 시스템이 Windows 8.1 크기 조정 모드에서 실행 중이면 사용자에게 현재 배율 인수를 작게에서 중간, 큰 크기로 재정의할 수 있는 슬라이더가 제공됩니다. 이 설정은 HKCU\Control Panel\Desktop\DesktopDPIOverride 레지스트리 키에서 구성됩니다.
표 4 HKCU\Control Panel\Desktop\DesktopDPIOverride 값
키 값 | 의미 |
---|---|
<0 | 각 디스플레이 배율을 기본값에서 이 값으로 줄입니다(예: 기본값이 150% 크기 조정인 경우 -1은 125%, -2는 100%에 해당). |
0 | 각 디스플레이에 기본값을 사용합니다. |
0.> | 각 표시 계수를 이 값으로 늘입니다(이전 예를 사용하여 +1은 200% 크기 조정에 해당). |
이 모드의 모든 디스플레이 배율은 100%, 125%, 150%, 200%의 네 가지 값 중 하나로 제한됩니다. 또한 크기 조정이 적용된 후 애플리케이션은 최소 720개의 유효 해상도 라인(즉, 디스플레이의 물리적 세로 해상도를 배율로 나눈 값)을 가질 것으로 예상합니다. 이는 허용되는 디스플레이 배율의 범위를 더 제한할 수 있습니다. 표 5 표시 값은 다양한 크기의 디스플레이에 허용되는 값을 보여 줍니다.
표 5 표시 값
세로줄 | 지원되는 배율 |
---|---|
<900 | 100% |
>= 900 및 <1080 | 100%, 125% |
>=1080 및 < 1440 | 100%, 125%, 150% |
>=1440 | 100%, 125%, 150%, 200% |
Windows 8 크기 조정 모드의 시스템 전체 배율
내 모든 디스플레이에 대해 하나의 크기 조정 수준을 선택하도록 허용 확인란을 선택하면 사용자는 각 디스플레이의 픽셀 밀도에 관계없이 모든 디스플레이에 적용되는 배율을 지정할 수 있습니다. 사용자 지정 설정을 사용하면 사용자는 100%, 125%, 150%, 200% 이외의 값을 선택할 수 있지만 범위(100%-500%)로 제한됩니다. 이 설정은 HKCU\Control Panel\Desktop\LogPixels 레지스트리 키에서 구성됩니다.
표 6 HKCU\Control Panel\Desktop\LogPixels 값
키 값 | 의미 |
---|---|
96 | 모든 디스플레이에서 100% 스케일링 |
120 | 모든 디스플레이에서 125% 스케일링 |
144 | 모든 디스플레이에서 150% 스케일링 |
192 | 모든 디스플레이에서 200% 스케일링 |
<other> | <기타> 모든 디스플레이에서 96/100 스케일링 |