높은 DPI 스케일링을 강제하는 방법은 무엇입니까?


27

응용 프로그램을 고해상도 DPI로 만들려면 어떻게해야합니까?

  • 개발자가 실제로 그렇지 않은 경우 응용 프로그램이 높은 DPI 인식으로 표시된 것으로 가정합니다. dpi 스케일링을 어떻게 강제 할 수 있습니까?

  • HighDpiAware응용 프로그램이 실제로 없을 때 Microsoft가 " "호환 심을 적용한 응용 프로그램이 있다고 가정 합니다. dpi 스케일링을 어떻게 강제 할 수 있습니까?

Windows에서 응용 프로그램에 dpi 배율을 적용하도록하려면 어떻게해야합니까?


편집 : 높은 DPI 스케일링이란 무엇입니까?

모든 사용자가 96dpi에서 Windows를 실행하는 것은 아닙니다. 모든 버튼이 75x23 픽셀 인 것은 아니며 모든 툴바의 높이가 25 픽셀 인 것은 아니며 모든 트 리뷰 글리프가 16x16 인 것은 아닙니다. 사용자가 Windows에 대해 다른 dpi 설정을 선택한 경우 모든 것을 적절하게 조정해야합니다.

문제는 높은 DPI 설정을 잘 처리하여 개발자가 거의 작업을 수행하지 않는다는 것입니다. 기껏해야 모든 것이 "동일한 크기"를 유지합니다. 즉, 모든 것이 조그마하게 나타납니다 . 최악의 경우 텍스트가 잘리고 컨트롤이 표시되지 않는 형식이 잘못 배치됩니다.

Windows Vista를 시작으로 Desktop Composition의 강력한 기능을 활용하여 Microsoft는 개발자가 업무를 수행하는 것을 포기하고 이제는 응용 프로그램에 속합니다. 그들은 사용자가 96dpi에서 실행 중임을 앱에 알려줍니다. 그런 다음 Windows는 비디오 카드와 데스크탑 구성을 사용하여 양식을 확장합니다.

찬성 : 폼의 내용은 읽기 좋은 크기가 될 것입니다.
단점 : 모든 것이 약간 흐릿합니다.

이 "높은 DPI 스케일링"기능은 사용자의 판단에 따라 작동하며 다음이 필요합니다.

  • Windows Vista 이상
  • 사용 가능한 데스크톱 구성
  • "Windows XP 스타일 스케일링 사용"을 끄려면
  • 사용자는 응용 프로그램에 대한 스케일링을 비활성화하지 않습니다

개발자는 높은 DPI 스케일링을 거부 할 수 있습니다. 응용 프로그램을 제대로 작성하려고 노력했지만 높은 DPI를 올바르게 처리 할 수 ​​있다는 것을 알고 있다면 실행 파일에 매니페스트 항목을 추가하고 " 높은 수준의 DPI "를 선언함으로써이 스케일링을 해제 할 수 있습니다 .

응용 프로그램에서 사용자의 기본 설정 (글꼴, 글꼴 크기 및 dpi 설정 포함)을 존중하도록 하는 방법 에 대한 주제 는 의문입니다 stack overflow. " 높은 DPI 인식 "을 선언하는 매니페스트 항목의 구문도 마찬가지 입니다.

질문은 수퍼 유저 에서 실제로 응용 프로그램 높은 DPI를 인식 하지 못하는 경우 높은 DPI 인식 매니페스트 항목을 추가 한 개발자 를 무시 하는 방법 입니다. 그들은 Windows에게 스케일링을 비활성화하라고 지시했지만 실제로 애플리케이션을 테스트하지는 않았습니다. "높은 DPI 인식"매니페스트 항목 이있는 소프트웨어가 있으며 이제 "큰 글꼴"(예 : 120dpi)에서 응용 프로그램을 사용할 수 없습니다.


나는 이것에도 관심이 있습니다. dpi를 인식하지 못하고 원래 800x600 화면 용으로 설계된 중요한 응용 프로그램이 있습니다. Windows는 기본적으로 크기를 조정하지 않으며 XP, Vista 또는 7을 사용하든 차이가 없습니다. 직원은이 800x600 앱에서 대부분의 시간을 소비하므로 20 인치 LCD 모니터 사용을 고집합니다. 800x600 해상도! 이것은 큰 낭비이며 MS Office, IE8 등을 사용해야 할 때 픽셀 자체 부족으로 인해 방해가됩니다.
Miles Erickson

1
그것은 마이크로 소프트가 데스크톱 구성 (일부 잘못 부르는 활용 시작했다 윈도우 비스타까지이지 않았다 에어로을 스케일링의 구체적 옵트 아웃하지 않는 규모의 응용 프로그램에 그래픽 카드를 사용). 이 XP에는 스케일링은 없었다, 당신은하지 않습니다 싶은 당신은 당신의 응용 프로그램이 제대로 기록 할 비스타 7에서 확장. 개발자 컴퓨터로 이동하여 해상도를 다시 1050으로 변경하고 dpi를 168로 설정합니다. 앱이 제대로 작동하지 않는 것을 제외하고는 모든 것이 tard 모드에서 크게 확대됩니다. 그들이 고정 될 때까지 음식이나 물을받지 못한다고 이야기하십시오.
Ian Boyd

우리가 항상 사용하는 앱을 만드는 개발자에게 접근 할 수있는 것은 아닙니다. 우리 만했다면 ...
Cylindric

형태 = 형태?
jiggunjer

답변:


5

흠. 내 제안은 매니페스트를 편집하고 잘못된 선언을 제거하는 것입니다. 그러나 개발자에 대해 버그를 범하는 것을 잊지 마십시오.

편집 : 단순히 매니페스트를 실행 파일 옆에 배치 할 수 있어야합니다 (예 foo.exe:)에 매니페스트를 배치하십시오 foo.exe.manifest. MSDN 문서를 참조 하십시오 ( "파일 이름 구문"섹션 참조).


나는 이것이 유일한 길이라고 가정합니다. 단점 : 그것은 어플리 케이 션의 디지털 서명을 무효화합니다.
Ian Boyd

@Ian : 당신이하지 않는 것 같습니다 자원에 매니페스트를 넣어.
SamB

3
예전에는 .manifest파일이 실행 파일 내의 매니페스트보다 우선했습니다. 오늘날 실행 파일에 내장 된 매니페스트는 모든 외부 .manifest파일 보다 우선 합니다. XP의 어떤 서비스 팩이 변경되었는지 기억이 나지 않습니다. SP2라고 생각합니다.
Ian Boyd

8

방금 SetProcessDPIAware에 대한 호출을 연결하고 리디렉션하는 DLL을 출시했습니다. 코드를 통한 DPI 스케일링을 비활성화하는 응용 프로그램의 경우 이진 패치와 비교하여 빠르고 쉬운 수정입니다.

DPIMangler : 블로그 게시물 , 소스 코드 .


6

매니페스트를 계속 편집 할 수 있지만 .EXE 파일 자체에서 매니페스트를 편집하면됩니다. 매니페스트가 지원되는 리소스 편집기를 찾으십시오. 기본적인 지원이 포함 된 예는 XN Resource Editor입니다.) HIGHDPIAWARE가 언급 된 행을 찾아 삭제하고 실행 파일을 저장하십시오.

그러나 실행 파일을 편집하기 전에 사본을 작성하십시오!


"단점 : 그것은 어플리 케이 션의 디지털 서명을 무효화합니다."
Ian Boyd

0

ResizeEnable이 무엇을 찾고 있는지 궁금합니다.

http://www.digitallis.co.uk/pc/ResizeEnable/


아니요, 창 크기는 이미 조정되어 있습니다. 컴포 지터가 표시 할 창을 합성 할 때 문제가 발생합니다. 응용 프로그램이 확장 할 필요가 없다고 말 했으므로 지금은 특별한 작업을 수행하지 않습니다. 그러나 사실 창이 않습니다 확장 할 필요가있다.
Ian Boyd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.