비주얼 스타일을 사용하여 컨트롤 렌더링Rendering Controls with Visual Styles

.NET Framework는 컨트롤을 지 원하는 운영 체제의 비주얼 스타일을 사용 하 여 컨트롤 및 기타 Windows UI (사용자 인터페이스) 요소를 렌더링 하는 기능을 제공 합니다.The .NET Framework provides support for rendering controls and other Windows user interface (UI) elements using visual styles in operating systems that support them. 이 항목에서는 운영 체제의 현재 비주얼 스타일을 사용 하 여 컨트롤 및 기타 UI 요소를 렌더링 하는 .NET Framework의 몇 가지 지원 수준에 대해 설명 합니다.This topic discusses the several levels of support in the .NET Framework for rendering controls and other UI elements with the current visual style of the operating system.

공용 컨트롤의 클래스 렌더링Rendering Classes for Common Controls

컨트롤 렌더링이란 컨트롤의 사용자 인터페이스를 그리는 것을 말합니다.Rendering a control refers to drawing the user interface of a control. System.Windows.Forms 네임스페이스는 몇 가지 일반적인 Windows Forms 컨트롤 렌더링을 위한 ControlPaint 클래스를 제공합니다.The System.Windows.Forms namespace provides the ControlPaint class for rendering some common Windows Forms controls. 그러나 이 클래스는 Windows 클래식 스타일로 컨트롤을 그립니다. 따라서 비주얼 스타일이 사용되는 애플리케이션에서 사용자 지정 컨트롤을 그릴 때 일관된 UI 환경을 유지하기가 어려울 수 있습니다.However, this class draws controls in the classic Windows style, which can make it difficult to maintain a consistent UI experience when drawing custom controls in applications with visual styles enabled.

.NET Framework 2.0에는 비주얼 스타일을 System.Windows.Forms 사용 하 여 공용 컨트롤의 파트와 상태를 렌더링 하는 네임 스페이스의 클래스가 포함 되어 있습니다.The .NET Framework 2.0 includes classes in the System.Windows.Forms namespace that render the parts and states of common controls with visual styles. 이러한 각 클래스에는 운영 체제의 현재 비주얼 스타일을 사용하여 특별한 상태의 컨트롤 또는 컨트롤의 일부를 그리기 위한 static 메서드가 포함되어 있습니다.Each of these classes includes static methods for drawing the control or parts of the control in a particular state with the current visual style of the operating system.

이러한 클래스 중 일부는 비주얼 스타일의 사용 가능 여부와 상관없이 관련 컨트롤을 그리도록 설계되어 있습니다.Some of these classes are designed to draw the related control regardless of whether visual styles are available. 비주얼 스타일을 사용할 수 있는 경우 클래스 멤버는 비주얼 스타일로 관련 컨트롤을 그립니다. 비주얼 스타일을 사용할 수 없는 경우 클래스 멤버는 Windows 클래식 스타일로 컨트롤을 그립니다.If visual styles are enabled, then the class members will draw the related control with visual styles; if visual styles are disabled, then the class members will draw the control in the classic Windows style. 이러한 클래스에는 다음이 포함됩니다.These classes include:

다른 클래스는 비주얼 스타일을 사용할 수 있을 때에만 관련 컨트롤을 그릴 수 있으며, 비주얼 스타일을 사용할 수 없는 경우 해당 멤버는 예외를 throw합니다.Other classes can only draw the related control when visual styles are available, and their members will throw an exception if visual styles are disabled. 이러한 클래스에는 다음이 포함됩니다.These classes include:

이러한 클래스를 사용 하 여 컨트롤 을 그리는 방법에 대 한 자세한 내용은 방법: 컨트롤 렌더링 클래스를 사용 합니다.For more information on using these classes to draw a control, see How to: Use a Control Rendering Class.

비주얼 스타일 요소 및 렌더링 클래스Visual Style Element and Rendering Classes

System.Windows.Forms.VisualStyles 네임스페이스에는 그리기에 사용할 수 있고 비주얼 스타일에서 지원되는 컨트롤이나 UI 요소에 대한 정보를 가져올 수 있는 클래스가 포함되어 있습니다.The System.Windows.Forms.VisualStyles namespace includes classes that can be used to draw and get information about any control or UI element that is supported by visual styles. 지원되는 컨트롤에는 System.Windows.Forms 네임스페이스에 렌더링 클래스가 있는 공용 컨트롤(이전 섹션 참조) 및 탭 컨트롤과 rebar 컨트롤 같은 기타 컨트롤이 포함됩니다.Supported controls include common controls that have a rendering class in the System.Windows.Forms namespace (see the previous section), as well as other controls, such as tab controls and rebar controls. 기타 지원되는 UI 요소에는 시작 메뉴의 일부, 작업 표시줄 및 창의 비클라이언트 영역이 있습니다.Other supported UI elements include the parts of the Start menu, the taskbar, and the nonclient area of windows.

System.Windows.Forms.VisualStyles 네임스페이스의 주요 클래스는 VisualStyleElementVisualStyleRenderer입니다.The main classes of the System.Windows.Forms.VisualStyles namespace are VisualStyleElement and VisualStyleRenderer. VisualStyleElement 는 비주얼 스타일에서 지원하는 컨트롤 또는 사용자 인터페이스 요소를 식별하기 위한 기본 클래스입니다.VisualStyleElement is a foundation class for identifying any control or user interface element supported by visual styles. VisualStyleElement 자체 외에도 System.Windows.Forms.VisualStyles 네임스페이스에는 컨트롤, 컨트롤 파트 또는 비주얼 스타일에서 지원하는 기타 UI 요소의 모든 상태에 대해 VisualStyleElement를 반환하는 static 속성을 가지고 있는 VisualStyleElement의 여러 중첩된 클래스가 포함되어 있습니다.In addition to VisualStyleElement itself, the System.Windows.Forms.VisualStyles namespace includes many nested classes of VisualStyleElement with static properties that return a VisualStyleElement for every state of a control, control part, or other UI element supported by visual styles.

VisualStyleRenderer 는 그리기를 수행하고 운영 체제의 현재 비주얼 스타일에 의해 정의된 각 VisualStyleElement 에 대한 정보를 가져오는 메서드를 제공합니다.VisualStyleRenderer provides the methods that draw and get information about each VisualStyleElement defined by the current visual style of the operating system. 요소에 대해 검색할 수 있는 정보에는 기본 크기, 배경 유형 및 색상 정의가 포함됩니다.Information that can be retrieved about an element includes its default size, background type, and color definitions. VisualStyleRenderer 는 Windows Platform SDK의 Windows 셸 부분에서 비주얼 스타일(UxTheme) API의 기능을 래핑합니다.VisualStyleRenderer wraps the functionality of the visual styles (UxTheme) API from the Windows Shell portion of the Windows Platform SDK. 자세한 내용은 비주얼 스타일 사용을 참조 하세요.For more information, see Enabling Visual Styles.

VisualStyleRenderer VisualStyleElement 사용에대한자세한 내용은 방법: 비주얼 스타일 요소를 렌더링 합니다.For more information about using VisualStyleRenderer and VisualStyleElement, see How to: Render a Visual Style Element.

비주얼 스타일 사용Enabling Visual Styles

.NET Framework 버전 1.0 용으로 작성 된 응용 프로그램에 대 한 비주얼 스타일을 사용 하도록 설정 하려면 프로그래머는 컨트롤을 그리기 위해 Comctl32.dll 버전 6 이상을 사용 하도록 지정 하는 응용 프로그램 매니페스트를 포함 해야 합니다.To enable visual styles for an application written for the .NET Framework version 1.0, programmers must include an application manifest that specifies that ComCtl32.dll version 6 or later will be used to draw controls. .NET Framework 버전 1.1 이상을 사용 하 여 빌드된 응용 프로그램은 Application.EnableVisualStyles Application 클래스의 메서드를 사용할 수 있습니다.Applications built with the .NET Framework version 1.1 or later can use the Application.EnableVisualStyles method of the Application class.

비주얼 스타일 지원 확인Checking for Visual Styles Support

RenderWithVisualStyles 클래스의 Application 속성은 현재 응용 프로그램이 비주얼 스타일로 컨트롤을 그리는지 여부를 나타냅니다.The RenderWithVisualStyles property of the Application class indicates whether the current application is drawing controls with visual styles. 사용자 지정 컨트롤을 그릴 때 비주얼 스타일을 사용하거나 사용하지 않으면서 컨트롤을 렌더링할 지 여부를 판단하려면 RenderWithVisualStyles 의 값을 확인할 수 있습니다.When painting a custom control, you can check the value of RenderWithVisualStyles to determine whether you should render your control with or without visual styles. 다음 표에는 RenderWithVisualStyles 를 반환하기 위해 true에 필요한 네 가지 조건이 나열되어 있습니다.The following table lists the four conditions that must exist for RenderWithVisualStyles to return true.

조건Condition 노트Notes
운영 체제에서 비주얼 스타일을 지원합니다.The operating system supports visual styles. 이 조건을 별도로 확인하려면 IsSupportedByOS 클래스의 VisualStyleInformation 속성을 사용하세요.To verify this condition separately, use the IsSupportedByOS property of the VisualStyleInformation class.
사용자가 운영 체제에서 비주얼 스타일을 사용하도록 설정했습니다.The user has enabled visual styles in the operating system. 이 조건을 별도로 확인하려면 IsEnabledByUser 클래스의 VisualStyleInformation 속성을 사용하세요.To verify this condition separately, use the IsEnabledByUser property of the VisualStyleInformation class.
애플리케이션에서 비주얼 스타일이 사용 됩니다.Visual styles are enabled in the application. Application.EnableVisualStyles 메서드를 호출하여 또는 컨트롤 그리기에 ComCtl32.dll 버전 6 이상을 사용하도록 지정하는 응용 프로그램 매니페스트를 사용하여 응용 프로그램에서 비주얼 스타일을 사용하도록 설정할 수 있습니다.Visual styles can be enabled in an application by calling the Application.EnableVisualStyles method or by using an application manifest that specifies that ComCtl32.dll version 6 or later will be used to draw controls.
애플리케이션 창의 클라이언트 영역을 그리는 데 비주얼 스타일이 사용되고 있습니다.Visual styles are being used to draw the client area of application windows. 이 조건을 별도로 확인하려면 Application 클래스의 VisualStyleState 속성을 사용하고 값이 VisualStyleState.ClientAreaEnabled 또는 VisualStyleState.ClientAndNonClientAreasEnabled인지 확인하세요.To verify this condition separately, use the VisualStyleState property of the Application class and verify that it has the value VisualStyleState.ClientAreaEnabled or VisualStyleState.ClientAndNonClientAreasEnabled.

사용자가 비주얼 스타일을 사용하는지 여부 또는 한 비주얼 스타일에서 다른 비주얼 스타일로 전환하는지 여부를 확인하려면 SystemEvents.UserPreferenceChanging 또는 SystemEvents.UserPreferenceChanged 이벤트에 대한 처리기에서 UserPreferenceCategory.VisualStyle 값을 확인하세요.To determine when a user enables or disables visual styles, or switches from one visual style to another, check for the UserPreferenceCategory.VisualStyle value in the handlers for the SystemEvents.UserPreferenceChanging or SystemEvents.UserPreferenceChanged events.

중요

사용자가 비주얼 스타일을 사용할 때 또는 비주얼 스타일을 전환할 때 컨트롤 또는 UI 요소를 렌더링하기 위해 VisualStyleRenderer 를 사용하려는 경우, UserPreferenceChanged 이벤트 대신 UserPreferenceChanging 이벤트를 처리할 때 이를 수행해야 합니다.If you want to use VisualStyleRenderer to render a control or UI element when the user enables or switches visual styles, make sure that you do this when handling the UserPreferenceChanged event instead of the UserPreferenceChanging event. VisualStyleRenderer 을 처리할 때 UserPreferenceChanging클래스를 사용하는 경우 예외가 throw됩니다.An exception will be thrown if you use the VisualStyleRenderer class when handling UserPreferenceChanging.

참고자료See also