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)의 배율이 같지 않은지 분명 개발 시에는 제대로 윈도우 크기와 폰트를 맞춰서 개발했는데 정작 양산용에서는 폰트가 너무 크게 나온다던가 작게 나온다던가 하더군요.
위 내용은 아래 출처의 질/답 게시판에서 가져왔습니다.
참고 URL
classmethod.dev/ko/questions/13228185
반응형
'개발 > C#' 카테고리의 다른 글
[2021.06] C#에서 Cross-Thread Operation not valid 오류 (0) | 2021.06.09 |
---|---|
[2021.05] Enum을 Combobox에 값을 넣을 때 Foreach 문 활용방법 (0) | 2021.05.14 |
[2021.04] C#에서 WIN32 API를 이용한 객체로 폼 이동방법 (0) | 2021.04.06 |
[2021.04] C#에서 이중 인증 중 OTP 활용 방법 (0) | 2021.04.06 |
[2021.03] C#에서 Unix Time을 구해보자. (0) | 2021.03.26 |