프로젝트를 진행하면서 영문 뿐만 아니라 스페인어 OS에서 동작하게 만들어야 했다. 간단히 WinForm 속성중에 Language 속성에 해당 언어만 추가해 주면 잘 되겠지 했는데.. 아니 이게 왠걸..
 영문, 스페인 OS에서 프로그램이 좌우로 수축이 되어 출력된다. 이미 프로젝트는 많이 진행했는데.. 이걸 몰랐다니, 왜 선임은 이런걸 알려주지 않았을까? 몰랐으니까 안알려줬겠지..


AutoScaleMode

화면 해상도나 글꼴이 변경될 때 폼이나 컨트롤의 크기가 조정되는 방식을 결정한다.
MSDN - ContainerControl.AutoScaleMode 속성

WinForm 에서 폼 생성 시 기본적으로 이 프로퍼티의 값은 Font 이다. 



Font 적용 시, 운영체제의 글꼴 크기에 따라 컨트롤이나 폼의 크기가 확대 또는 축소된다. 

AutoScaleMode 값이 Font로 적용되어 있을 때, 폼에 이미지가 포함되어 있다면 이미지가 확대 또는 축소되게 된다. 또한 컨트롤 간의 간격도 확대 또는 축소되는 등, 컨트롤들이 아주 지 멋대루다. 대부분의 경우에 있어 AutoScaleMode값을 Font로 설정하는 일은 드믈지 않을까 싶다.

 AutoScaleMode 프로퍼티에 설정할 수 있는 값은 4가지 이다.

None : 자동 스케일 변경 없음
Font : 폰트 사이즈에 따른 스케일 변경
Dpi : 화면 해상도 Dpi 변경에 따른 스케일 변경
Inherit : 부모의 상태에 따라 변경


AutoScaleMode에 대해 더 고민하신 분의 링크를 남긴다.
Form과 UserControl의 AutoScaleMode 속성
C#– Windows 환경에 따른 Control Layout 불일치


요약하자면,

Form 의 AutoScaleMode
-  Dpi 값 사용
-  Dpi 값 사용으로 컨트롤들의 사이즈가 자동으로 늘어난다.
   하지만 이미지의 경우  Tile 옵션을 주면 자동으로 늘어나지 않으므로 Stretch 옵션을 주자.

UserControl 의 AutoScaleMode
- Inherit 값 사용. 

 

Posted by six605
,