c# 디스플래이 배율 변경에 따른 애플리캐이션의 모양 변경 막기
기술이 좋아져서 예전보다 커다란 모니터를 비싸지 않은 가격에 살 수 있게 되었다. 웹 써핑이나 할 때에는 큰 모니터가 특별히 필요하지는 않지만 금융 상품 매매를 할 때에는 큰 게 좋다. 차트를 크게 보면 더 긴 기간을 확인할 수 있고 매매 애플리캐이션을 쓸 때에도 여러 정보들을 동시에 나오게 하여 보는 게 일반적이기 때문이다.
모니터의 물리적인 크기가 커지고 해상도가 높아지면 같은 수의 픽셀들로 이루어진 객체는 상대적으로 더 작게 출력된다. 아이콘이나 글꼴이 대표적인 예다. 이런 불편을 없애기 위해 윈도우즈는 디스플래이의 배율을 조정할 수 있게 한다. 디스플래이 패널이 크면 보통 125%나 150%로 확대된다. 문제는 이러한 작업이 무척 정교한 것이어서 모든 객체들에 완벽하게 적용되는 건 아니라는 거다. 따라서 디자인을 한 배율이 아닌 배율에서 애플리캐이션을 실행해 보면 래이아웃 등이 뭉개져 보이는 경우들이 흔하다. 이런 문제들을 해결하려면 아래와 같이 한다.
실행 파일의 속성 > 호환성 > 높은 dpi 설정 변경 > 프로그램 dpi > 이 설정을 사용하여 설정에 있는 크기 조정 대신 이 프로그램의 크기 조정 문제를 해결하세요. -> 선택
위의 방법도 완전한 해결책은 아니다. 저렇게 하면 비율 차이에서 오는 불균형은 사라지지만 전체적으로 약간 흐릿하게 변한다. 이건 어쩔 수 없는 문제다. 쏘프트웨어적으로 보정을 하지 않고 작은 걸 억지로 크게 만들기 때문이다.
검색을 해 보면 폼의 AutoScaleMode를 none으로 하면 된다는 주장들이 있지만 이는 틀린 방법이다. 이 프라퍼티는 바꿔 봐야 소용 없고 마이크로쏘프트가 권장하듯 특별한 경우가 아니라면 기본 설정인 font로 놔두고 고칠 필요 없다.