c#/helper

c# ApplicationHighDpiMode 고해상도에서 선명하게

AUSTAR 2024. 4. 22. 23:03

해상도라고 하기에는 애매한 C#의 WinForms 혹은 WPF로 생성된 응용 프로그램을 높은 DPI 디스플레이에서 흐릿하게 보일 경우 선명하게 보이게 하기 위해 들어가는 옵션이라고 이해했다.

 

마이크로소프트 공식 문서에서 내용을 확인 했지만 자세하게 알기 어려워 스택오버플로어를 확인해보니 해당 내용을 알 수 있는 질문 글이 있었다.

 

automatic high DPI adaptation of running winforms app

I have several applications written with winforms using .net 6 and visual basic, all start very sharp even with high dpi display, but if the applications are started and I try to change the dpi set...

stackoverflow.com

 

 해당 기능은 .NET 6 이상 버전에만 적용되며 다음과 같은 옵션을 제공한다.

ApplicationHighDpiMode 옵션

 

.NET 6 버전에서는 별도 설정을 하지 않으면 SystemAuare 값이 기본 값으로 지정되어 있지만 .NET 8버전 이상에서는 PerMonitorV2 값이 기본값으로 설정되어있다. 해당 내용은 하단 .NET 8 새로운 기능 에서 확인할 수 있다.

 

Windows Forms .NET 8의 새로운 기능 - Windows Forms .NET

.NET 8용 Windows Forms의 새로운 기능에 관해 알아봅니다. Windows Forms. .NET은 .NET 7에 비해 더 새롭고 향상된 기능을 제공합니다.

learn.microsoft.com

 

 

따라서 .NET 6버전을 사용한다고 하면 높은 DPI을 사용하는 모니터에서 작성한 어플리케이션이 흐릿하게 보인다면 PerMonitorV2를 사용면 좋다고 한다.

 

설정하는 방법은 다음과 같다.

ApplicationHighDpiMode 설정

1. 솔루션 탐색기의 적용하고자 하는 프로젝트를 더블클릭한다.

2. <PropertyGroup> 태그 안에 <ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode> 를 입력한다.

 

제가 사용하는 프로젝트는 .NET 8 버전을 사용하기에 넣을 필요는 없지만 해당 값을 적용한다면 다음과 같습니다.

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net8.0-windows</TargetFramework>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
        <UseWPF>true</UseWPF>
        <ApplicationHighDpiMode>PerMonitorV2</ApplicationHighDpiMode>
    </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
  </ItemGroup>

</Project>

 

더 자세한 내용은 마이크로소프트 링크를 참조 바랍니다.

 

 

Microsoft.NET.Sdk.Desktop의 MSBuild 속성 - .NET

WPF 및 WinForms가 포함된 .NET 데스크톱 SDK에서 이해하는 MSBuild 속성 및 항목의 참조입니다.

learn.microsoft.com