다음을 통해 공유


비주얼 스타일을 사용하여 컨트롤 렌더링

업데이트: 2007년 11월

.NET Framework에서는 운영 체제에서 지원하는 비주얼 스타일을 사용하여 컨트롤 및 다른 Windows UI(사용자 인터페이스) 요소를 렌더링할 수 있습니다. 이 항목에서는 운영 체제의 현재 비주얼 스타일을 사용하여 컨트롤 및 다른 UI 요소를 렌더링하기 위해 .NET Framework에서 제공하는 여러 가지 수준의 지원에 대해 설명합니다.

공용 컨트롤의 렌더링 클래스

컨트롤 렌더링이란 컨트롤의 사용자 인터페이스를 그리는 작업을 말합니다. System.Windows.Forms 네임스페이스는 일부 공용 Windows Forms 컨트롤을 렌더링하기 위한 ControlPaint 클래스를 제공합니다. 그러나 이 클래스는 컨트롤을 이전 Windows 스타일로 그리므로 비주얼 스타일을 사용하여 응용 프로그램에서 사용자 지정 컨트롤을 그리는 경우 일관된 UI 환경을 유지 관리하기가 어렵습니다.

.NET Framework 2.0에는 비주얼 스타일을 사용하여 공용 컨트롤의 부분 및 상태를 렌더링하는 System.Windows.Forms 네임스페이스에 클래스가 포함되어 있습니다. 이러한 각 클래스에는 운영 체제의 현재 비주얼 스타일을 사용하여 특정 상태의 컨트롤 부분 또는 컨트롤을 그리기 위한 static 메서드가 포함되어 있습니다.

이러한 클래스 중 일부는 비주얼 스타일의 사용 가능성에 관계없이 관련된 컨트롤을 그리도록 디자인되었습니다. 비주얼 스타일을 사용할 수 있는 경우 클래스 멤버는 비주얼 스타일을 사용하여 관련된 컨트롤을 그리고 비주얼 스타일을 사용할 수 없는 경우 이전 Windows 스타일을 사용하여 컨트롤을 그립니다. 여기에는 다음과 같은 클래스가 포함됩니다.

이 이외의 클래스는 비주얼 스타일을 사용 가능한 경우에만 관련된 컨트롤을 그릴 수 있으며 비주얼 스타일을 사용할 수 없는 경우에는 해당 멤버가 예외를 throw합니다. 여기에는 다음과 같은 클래스가 포함됩니다.

이러한 클래스를 사용하여 컨트롤을 그리는 방법에 대한 자세한 내용은 방법: 컨트롤 렌더링 클래스 사용을 참조하십시오.

비주얼 스타일 요소 및 렌더링 클래스

System.Windows.Forms.VisualStyles 네임스페이스에는 비주얼 스타일에서 지원하는 모든 컨트롤 또는 UI 요소를 그리고 이에 대한 정보를 가져오는 데 사용할 수 있는 클래스가 포함되어 있습니다. 지원되는 컨트롤에는 System.Windows.Forms 네임스페이스에 렌더링 클래스를 포함하는 공용 컨트롤(이전 단원 참조)을 비롯하여 tab 컨트롤 및 rebar 컨트롤과 같은 다른 컨트롤이 포함됩니다. 지원되는 기타 UI 요소에는 시작 메뉴의 부분, 작업 표시줄 및 창의 비클라이언트 영역이 포함됩니다.

System.Windows.Forms.VisualStyles 네임스페이스의 주 클래스는 VisualStyleElementVisualStyleRenderer입니다. VisualStyleElement는 비주얼 스타일에서 지원하는 모든 컨트롤 또는 사용자 인터페이스 요소를 식별하기 위한 FC(Foundation Class)입니다. VisualStyleElement 외에도 System.Windows.Forms.VisualStyles 네임스페이스에는 비주얼 스타일에서 지원하는 모든 컨트롤의 상태, 컨트롤 부분 또는 다른 UI 요소에 대해 VisualStyleElement를 반환하는 static 속성이 설정된 VisualStyleElement의 여러 중첩 클래스가 포함되어 있습니다.

VisualStyleRenderer는 운영 체제의 현재 비주얼 스타일에 의해 정의된 각 VisualStyleElement를 그리고 이에 대한 정보를 가져오는 메서드를 제공합니다. 요소에 대해 검색할 수 있는 정보에는 기본 크기, 백그라운드 형식 및 색상 정의가 포함됩니다. VisualStyleRenderer는 Windows Platform SDK의 Windows 셸 부분에서 비주얼 스타일(UxTheme) API의 기능을 래핑합니다. 자세한 내용은 https://msdn.microsoft.com/library/kor에 있는 MSDN 라이브러리의 Platform SDK 부분에서 "Using Windows XP Visual Styles"를 참조하십시오.

VisualStyleRendererVisualStyleElement 사용에 대한 자세한 내용은 방법: 비주얼 스타일 요소 렌더링을 참조하십시오.

비주얼 스타일 사용

.NET Framework 버전 1.0용으로 작성된 응용 프로그램에 비주얼 스타일을 사용하려면 프로그래머가 컨트롤 그리기에 ComCtl32.dll 버전 6 이상을 사용하도록 지정하는 응용 프로그램 매니페스트를 포함해야 합니다. .NET Framework 버전 1.1 이상으로 빌드된 응용 프로그램은 Application 클래스의 Application.EnableVisualStyles 메서드를 사용할 수 있습니다.

비주얼 스타일 지원 확인

Application 클래스의 RenderWithVisualStyles 속성은 현재 응용 프로그램에서 비주얼 스타일을 사용하여 컨트롤을 그리는지 여부를 나타냅니다. 사용자 지정 컨트롤을 그리는 경우 RenderWithVisualStyles의 값을 확인하여 컨트롤 렌더링 시 비주얼 스타일을 사용해야 하는지 여부를 확인할 수 있습니다. 다음 표에서는 RenderWithVisualStyles에서 true를 반환하기 위해 필요한 네 가지 조건을 보여 줍니다.

조건

설명

운영 체제에서 비주얼 스타일 지원

이 조건을 개별적으로 확인하려면 VisualStyleInformation 클래스의 IsSupportedByOS 속성을 사용합니다.

사용자가 운영 체제에서 비주얼 스타일을 사용하도록 설정

이 조건을 개별적으로 확인하려면 VisualStyleInformation 클래스의 IsEnabledByUser 속성을 사용합니다.

응용 프로그램에서 비주얼 스타일 사용

Application.EnableVisualStyles 메서드를 호출하거나 컨트롤 그리기에 ComCtl32.dll 버전 6 이상을 사용하도록 지정하는 응용 프로그램 매니페스트를 사용하여 응용 프로그램에서 비주얼 스타일을 사용할 수 있습니다.

비주얼 스타일을 사용하여 응용 프로그램 창의 클라이언트 영역을 그림

이 조건을 개별적으로 확인하려면 Application 클래스의 VisualStyleState 속성을 사용하여 해당 값이 VisualStyleState.ClientAreaEnabled인지, 아니면 VisualStyleState.ClientAndNonClientAreasEnabled인지를 확인합니다.

사용자가 비주얼 스타일을 사용 또는 사용하지 않도록 설정할 때 또는 비주얼 스타일을 전환할 때 이를 확인하려면 SystemEvents.UserPreferenceChanging 또는 SystemEvents.UserPreferenceChanged 이벤트에 대한 처리기에서 UserPreferenceCategory.VisualStyle 값을 확인합니다.

중요:

사용자가 비주얼 스타일을 사용하거나 전환할 때 VisualStyleRenderer를 사용하여 컨트롤 또는 UI 요소를 렌더링하려면 UserPreferenceChanging 이벤트가 아니라 UserPreferenceChanged 이벤트를 처리할 때 이 작업을 수행해야 합니다. UserPreferenceChanging을 처리할 때 VisualStyleRenderer 클래스를 사용하면 예외가 throw됩니다.

참고 항목

기타 리소스

사용자 지정 컨트롤 그리기 및 렌더링