즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/C#

[2021.05] 모니터 해상도 및 배율에 따른 예외 처리

다물칸 2021. 5. 10. 14:34
728x90
반응형

예전에는 이런 고민은 웹, 모바일에서만 해도 되는 거였는데 요즘은 4k, 8k 모니터가 나오면서 해상도가 기하급수적으로 커지기 시작했습니다. 해상도가 커지면 상대적으로 폰트크기가 작아집니다. 그래서 폰트 배율을 보통 개인차가 있겠지만 150% 또는 300%로 맞춰놓고 사용합니다. 

 

이럴 경우 윈도우 폼 개발 시에도 웹, 모바일에서 이야기하는 반응형으로 개발을 해야 하는데 클래스 한개와 한줄의 코드 그리고 폼(Form)의 AutoScaleMode를 Dpi에서 Font로 변경하는 방법으로 어느 정도 Cover가 됩니다. 

 

적당한 위치에 다음 클래스 파일을 추가합니다. 

 

using System.Runtime.InteropServices;
public static class Dpi
{
        [DllImport("Shcore.dll")]
        public static extern int SetProcessDpiAwareness(int processDpiAwareness);
        /// <summary>
        /// According to https://msdn.microsoft.com/en-us/library/windows/desktop/dn280512(v=vs.85).aspx
        /// </summary>
        public enum DpiAwareness
        {
            None = 0,
            SystemAware = 1,
            PerMonitorAware = 2
        }
    }
}

program.cs 파일에 다음처럼 입력합니다.

 

static void Main()
{
...
    Dpi.SetProcessDpiAwareness((int)Dpi.DpiAwareness.None);
    Application.Run(new MainForm());
}

그리고 MainForm의 AutoScaleMode를 Dpi에서 Font로 변경합니다. 혹은 변경하지 않고 비교해보세요. 

 

또 한가지 4K모니터라고 해서 다 같은 해상도와 배율이 나오지 않습니다. 다양한 벤더에서 나오는 모니터를 다 체크해보셔야 합니다. 제 개발용 모니터(4K)와 양산용 모니터(4K)의 배율이 같지 않은지 분명 개발 시에는 제대로 윈도우 크기와 폰트를 맞춰서 개발했는데 정작 양산용에서는 폰트가 너무 크게 나온다던가 작게 나온다던가 하더군요. 

 

위 내용은 아래 출처의 질/답 게시판에서 가져왔습니다. 

 

 

출처: www.sysnet.pe.kr/3/0/5286

 

윈도우 배율 및 레이아웃에 대한 질문입니다.

윈도우 배율 및 레이아웃에 대한 질문입니다. [링크 복사], [링크+제목 복사] 조회: 3741 글쓴 사람 gongs 홈페이지 첨부 파일 부모글 보이기/감추기 안녕하세요. c# 윈폼으로 개발된 프로그램이 있습

www.sysnet.pe.kr

참고 URL

  classmethod.dev/ko/questions/13228185

 

c# - 높은 DPI 설정 (예 : 150 %)이있는 컴퓨터에서 올바르게 실행되도록 앱을 구성하는 방법 - by Boris

C #으로 간단한 Winforms 애플리케이션을 만들었습니다. DPI 설정 (예 : 150 %)이 높은 컴퓨터에서 응용 프로그램을 실행하면 응용 프로그램이 확장됩니다. 여태까지는 그런대로 잘됐다! 그러나 더 큰

classmethod.dev

 

반응형