VB.NET 2008/VB - 폼(Form)

Windows Forms - 자동 배율 조정

본클라쓰 2011. 4. 10. 09:34

 

자동 배율 조정 기능을 사용하면 한 컴퓨터에서 특정 해상도 또는 시스템 글꼴로 표시되도록 설계된 폼과 그 컨트롤을 다른 컴퓨터에서 다른 해상도 또는 시스템 글꼴로 표시할 수 있다. 이 기능은 폼과 그 컨트롤의 크기를 사용자 컴퓨터와 다른 개발자 컴퓨터에서 네이티브 Windows 및 기타 응용 프로그램에 맞게 자동으로 조정한다.

 

자동 배율 조정 기능을 사용하지 않으면 한 가지 해상도 또는 글꼴용으로 설계된 응용 프로그램의 경우 해상도나 글꼴이 변경될 때 너무 작거나 너무 크게 표시된다. 예를 들어, Tahoma 9 포인트를 기준선으로 사용하도록 설계된 응용 프로그램을 시스템 글꼴이 Tahoma 12 포인트인 컴퓨터에서 조정을 하지 않고 실행하면 이 응용 프로그램이 너무 작게 표시되낟. 제목, 메뉴, 텍스트 상자 내용 등의 텍스트 요소느느 다른 응용 프로그램에 비해 작게 렌더링된다. 뿐만 아니라 제목 표시줄과 같은 텍스트를 포함하는 UI(사용자 인터페이스) 요소, 메뉴 및 여러 컨트롤의 크기는 사용되는 글꼴에 따라 결정된다.

 

응용 프로그램이 특정 해상도용으로 설계된 경우에도 비슷한 상황이 발생한다. 가장 일반적인 해상도는 96dpi이지만 120, 133, 170 및 그 이상을 지원하는 고해상도가 점차 많이 사용되고 있다. 한 가지 해상도용으로 설계된 응용 프로그램, 특히 그래픽 기반 응용 프로그램을 다른 해상도에서 조정 없이 실행하면 너무 작거나 너무 크게 표시된다.

 

자동 배율 조정 기능을 상대적인 글꼴 크기 또는 해상도에 따라 폼과 그 자식 컨트롤의 크기르르 자동으로 조정하여 이러한 문제를 해결한다. Windows 운영 체제에서는 대화 상자 단위라고 하는 상대적인 측정 단위를 사용하여 대화 상자의 자동 배율 조정을 지원한다. 대화 상자 단위는 시스템 글꼴을 기준으로 하며 픽셀과의 관계는 Win32 SDK 함수인 GetDialogBaseUnits를 통해 확인할 수 있다. 사용자가 Windows에서 사용되는 테마를 변경하면 모든 대화 상자도 그에 따라 자동으로 조정된다.

 

 

Windows Forms에서는 현재 당므과 같은 논리를 사용하여 폼과 그 내용의 배율을 자동으로 조정한다.

 

1. 각 ContainerControl이 배율 조정 모드와 현재 해상도를 각각 AutoScaleMode 및 AutoScaleDimensions에 기록된다.

 

2. 런타임에는 실제 해상도가 CurrentAutoScaleDimensions 속성에 저장된다. AutoScaleFactor 속성을 런타임 배율 조정 해상도와 디자인 타임 배율 조정 해상도의 비율을 동적으로 계산한다.

 

3. 폼이 로드될 때 CurrentAutoScaleDimensions 값과 AutoScaleDimensions 값이 다르면 performAutoScale 메서드가 호출되어 컨틀롤과 그 자식 컨트롤의 배율이 조정도니다. 이 메서드는 레이아웃을 일시 중단시킨 다음 Scale 메서드를 호출하여 실제 배율 조정을 수행한다. 그런 다음 점차적으로 배율 조정이 수행되지 않도록 AutoSacleDimensions 값이 업데이트 된다.