높은 DPI 디스플레이에 제대로 표시
Direct2D는 많은 높은 DPI 문제를 해결하지만 애플리케이션이 높은 DPI 디스플레이에서 제대로 작동하는지 확인하기 위해 수행해야 하는 두 가지 단계가 있습니다.
1단계: 창의 DPI를 만든 후 자체 DPI 사용
GetDpiForWindow 함수는 지정된 창에 대한 dpi(인치당 점 수) 값을 검색합니다. 해당 값을 사용하여 창 너비를 설정하려면 다음 수식을 사용합니다.
< Dpi> * <너비(픽셀 단위>/ 기본 DPI) <>
... 여기서 DPI는 GetDpiForWindow에서 다시 시도되는 값이고 기본 DPI는 96(헤더에서 winuser.h
로 USER_DEFAULT_SCREEN_DPI
정의됨)입니다. 수식은 세로 축과 비슷합니다.
< Dpi> * <높이(픽셀 단위>/ 기본 세로 DPI) <>
간단한 Direct2D 애플리케이션 만들기 2.3단계의 코드 예제는 창의 DPI를 검색한 다음 크기가 DPI로 확장된 640 × 480으로 설정합니다.
참고
UWP(유니버설 Windows 플랫폼) 앱의 경우 DisplayInformation::LogicalDpi 속성을 사용할 수 있습니다.
2단계: 애플리케이션이 DPI 인식임을 선언합니다.
애플리케이션이 자신을 DPI 인식으로 선언하는 경우 애플리케이션이 최대 200DPI의 DPI 설정에서 잘 작동하도록 지정하는 문입니다. Windows Vista 및 Windows 7에서 DPI 가상화를 사용하도록 설정하면 DPI를 인식하지 않는 애플리케이션의 크기가 조정되고 애플리케이션은 GetSystemMetric 함수와 같은 시스템 API에서 가상화된 데이터를 받습니다. 애플리케이션이 DPI 인식임을 선언하려면 다음 단계를 완료합니다.
DeclareDPIAware.manifest라는 파일을 만듭니다.
다음 xml을 파일에 복사하고 저장합니다.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" > <asmv3:application> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>true</dpiAware> </asmv3:windowsSettings> </asmv3:application> </assembly>
프로젝트의 .vcproj 파일에서 VisualStudioProject/Configurations 아래의 각 Configuration 요소 내에 다음 항목을 추가합니다.
<Tool Name="VCManifestTool" AdditionalManifestFiles="DeclareDPIAware.manifest" />