Winform HiDPI scale지원. Winform에서 DpiChanged 이벤트가 호출되지 않을때.

글을 새로 올렸습니다.

winform DPI 배율(스케일링) 문제.


아래의 작업을 해도
개발컴퓨터가 아닌 다른 컴퓨터에서는 SmartScreen에 걸리면서 오동작 합니다.
SmartScreen에 걸리면 설정이 뭔가 씹히는거 같네요.

--------------------------------------------------------

- 매니페스트를 프로젝트에 추가하세요.
프로젝트 - 새항목추가 - visual c# 항목 - 일반 - 애플리케이션 매니페스트 파일(Windows만 해당) 

- 프로젝트 속성 - 애플리케이션에서 위에서 만든 매니페스트를 추가하세요.
프로젝트 속성 - 애플리케이션에서 .NET Framwork 4.7 이상으로 설정합니다.

- 전 vs2019인데 매니페스트를 편집하면 다음과 같은 항목이 있을겁니다.
Windows 10 아래에 주석처리되어 있으면 주석을 제거합니다.
없으면 아래와 같이 추가해 줍니다.

 <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> 
</application>
  </compatibility>


- App.config 를 편집합니다.
<configuration> 사이에 아래와 같이 추가해 줍니다.

 <System.Windows.Forms.ApplicationConfigurationSection>
   <add key="DpiAwareness" value="PerMonitorV2" />
 </System.Windows.Forms.ApplicationConfigurationSection>


- 여기까지 하면 윈도우 설정 - 시스템 - 디스플레이에서 배율을 변경할때 Form1_DpiChanged 가 콜백될 겁니다.


Windows Forms의 높은 DPI 지원

Form.DpiChanged 이벤트 - 어떤 조건이 필요한지 설명이 없네요.

댓글

이 블로그의 인기 게시물

파이썬 vscode에서 자동 코드 정렬. Formatter.

Unity3D git 저장소에 올릴때 필요없는 파일 제외하기. gitignore

플러터(flutter) 개발 참고 사이트들.