- VS Form -> View Designer 에서 UI 작성중일때 발생


- 경고 메시지
Automatic scaling is turned off. WPF/UWP XAML designers might not display correctly,  Restart Visual Studio with automatic scaling

//

Scaling on your main display is set to 150%. Restart Visual Studion with 100% scaling. Help me decide

//

- 원인
현재 윈도우 화면 배율 설정이 100%가 아닌 경우 발생
주의! 이 상태에서 디자인한 윈도우 폼은 DPI가 다른 환경에서 실행시 폼 안의 요소들이 겹쳐지거나 폼을 벗어날 수 있음
참고 : 100%(96DPI), 125%(120DPI), 150%(144DPI)



- 처리

방법1 : 윈도우 화면 비율을 100%로 변경


방법2 : VS(Visual Studio)에 윈도우 스케일 적용 하지 않고 실행하기
devenv /noScale

    - 레지스트리 수정 => 나는 적용이 안됨
        - 사용하는 devenv.exe의 경로 확인
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe" /t REG_SZ /d "DPIUNAWARE" /f


방법3 : 설정에서 알림 끄기
Tools -> Options -> Windows Forms Designer -> DPI Scaling Notifications : False




//-------------------------------------
// 참고

Disable DPI-awareness to address scaling issues with Windows Forms Designer in Visual Studio
https://docs.microsoft.com/en-us/visualstudio/designers/disable-dpi-awareness?view=vs-2022

 

 

모니터당 DPI 인식 WPF 애플리케이션 개발

https://docs.microsoft.com/ko-kr/windows/win32/hidpi/declaring-managed-apps-dpi-aware?redirectedfrom=MSDN

 

 

WinForms Scaling at Large DPI Settings–Is It Even Possible?
https://www.telerik.com/blogs/winforms-scaling-at-large-dpi-settings-is-it-even-possible-

 

매니페스트 파일과 app.config 를 수정해도 메시지는 사라지지 않음

    - C# 매니페스트(Manifest) 파일 생성 방법
Project -> 우클릭 Propertes -> Security -> Enavle ClickOnce security settings 체크
프로젝트의 Propertes 폴더에 app.manifest 존재

 

//-------------------------------------

    - Properties\app.manifest 파일 수정(파일 샘플)

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">

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

  <asmv3:application>
    <asmv3:windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>

</assembly>

 

//-------------------------------------

    - app.config 파일 수정
<System.Windows.Forms.ApplicationConfigurationSection>
  <add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>

 

 

반응형
Posted by codens