2018. 2. 28. 00:05ㆍProgramming/Etc...
안녕하십니까 Nitro입니다.
오늘은 비주얼 스튜디오를 이용하면서, 생기는 문제점을 가져와봤습니다.
생각보다 난감하고 애매한 오류라 많은분들이 모르실것 같네요.
열심히 만들고 진행하던 프로잭트를 배포하거나 다른 컴퓨터로 옮겨서 진행할때,
컨트롤의 배열이 바뀌거나 사이즈가 변경되는일이 간혹 있는데요,
위처럼 736 * 50이 정상적인 크기인 프로그램이
다른 컴퓨터에서 열면 1051 * 83이 되버릴때가 있습니다.
이것때문에 한참 고생을 했었는데요,
한참 구글링을 한 결과, 이는 화면 비율차이에 의한 문제라는것을 알아냈습니다.
첫번째 사진은 일반 23인치 1920 * 1080 크기의 일반 대스크탑에서 진행할때의 사진이였습니다만.
두번째 사진은 13.5인치 2256 * 1504 크기의 서피스 랩탑에서 진행할때의 사진이였습니다.
문제는 여기서 발생하게 되는데요.
첫번째 대스크탑같은경우는 모니터 인치와 픽샐비가 잘 맞아 확대없이 100%의 배율로 윈도우가 셋팅되어있지만,
서피스 랩탑같은경우는 13.5인치라는 작은 모니터에 2256 * 1504의 겁나큰 픽샐비가 들어가기에. 일반 100% 배율로 사용하기 어려웠습니다.
그래서 기본 권장으로도 150% 배율 셋팅이 되어있는데요.
이 과정에서, 똑똑한 비주얼 스튜디오는 비율을 맞춘답시고 자동 크기 조정을 실시해버립니다.
그로 인하여, 특정 픽샐비로 폼 크기가 늘어나게 되어버리는것입니다.
위 문제를 해결할 방법은 2가지가 있습니다.
1. AutoScaleMode를 Dpi로 변경하기
각각 폼 컨트롤의 속성을 살펴보면 AutoScaleMode라는 항목이 Font로 설정되어있을 것입니다.
이를 None 으로 변경하게 되면, 화면 배율이 변경되더라도 프로그램은 그대로 본 상태를 유지하게 됩니다.
이를 Dpi로 변경하게 되면, 화면 배율에 따라 프로그램 크기가 변경됩니다.
장점 : 프로그램을 배포하였을때, Dpi 에 따라 프로그램이 확대, 축소 됨으로 호환성을 높입니다.
(Dpi 설정시, None으로 설정하면 2번째 방법과 효과가 동일함.)
단점 : 하나 하나 다 설정해줘야 합니다. (ㄱㅡ...)
2. 레지스트리 편집하기.
제가 찾은 마이크로소프트 문서입니다.
https://docs.microsoft.com/ko-kr/dotnet/framework/winforms/automatic-scaling-in-windows-forms
중간쯔음 가면 레지를 변경하라고 되어있는데요,
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe] "dpiAwareness"=dword:00000000
위와 같은 키값을 추가해주면 해결됩니다.
장점 : 컨트롤 하나하나 속성 변경을 하지 않아도 됩니다.
단점 : Dpi가 다른 컴퓨터에서 실행시 크기가 변합니다.
윽... 이제 서피스 랩탑으로도, 서피스 프로로도 마음데로 코딩할수 있겠군요.
모두들 즐 코딩 되시길..!
'Programming > Etc...' 카테고리의 다른 글
[노트].net core 윈도우에서 코딩후, 리눅스계열에서 실행하기! (2) | 2018.01.19 |
---|---|
암호 알고리즘의 종류와 기능 (대칭형/비대칭형/단방향 암호) (0) | 2017.12.18 |
오버플로는 무엇일까? (버퍼 오버플로의 뜻과 그로 인한 문제점!) (0) | 2017.11.27 |
컴퓨터의 수, 컴퓨터의 저장 단위에 대해 알아보자! Part 3[2진수 정수의 표현, 보수와 음수] (Bit, Byte, Kb, Mb... etc) (0) | 2017.10.16 |
컴퓨터의 수, 컴퓨터의 저장 단위에 대해 알아보자! Part 2[비트부터 시작하는 정보 단위] (Bit, Byte, Kb, Mb... etc) (0) | 2017.10.15 |