방법: 비주얼 스타일 요소 렌더링
업데이트: 2007년 11월
System.Windows.Forms.VisualStyles 네임스페이스는 비주얼 스타일에서 지원되는 Windows UI(사용자 인터페이스) 요소를 나타내는 VisualStyleElement 개체를 노출합니다. 이 항목에서는 VisualStyleRenderer 클래스를 사용하여 시작 메뉴의 로그오프 및 종료 단추를 나타내는 VisualStyleElement를 렌더링하는 방법을 보여 줍니다.
비주얼 스타일 요소를 렌더링하려면
VisualStyleRenderer를 만든 다음 그리려는 요소에 설정합니다. Application.RenderWithVisualStyles 속성 및 VisualStyleRenderer.IsElementDefined 메서드를 사용할 때 비주얼 스타일을 사용할 수 없거나 요소가 정의되지 않은 경우 VisualStyleRenderer 생성자는 예외를 throw합니다.
Private renderer As VisualStyleRenderer = Nothing Private element As VisualStyleElement = _ VisualStyleElement.StartPanel.LogOffButtons.Normal Public Sub New() Me.Location = New Point(50, 50) Me.Size = New Size(200, 200) Me.BackColor = SystemColors.ActiveBorder If Application.RenderWithVisualStyles And _ VisualStyleRenderer.IsElementDefined(element) Then renderer = New VisualStyleRenderer(element) End If End Sub
private VisualStyleRenderer renderer = null; private readonly VisualStyleElement element = VisualStyleElement.StartPanel.LogOffButtons.Normal; public CustomControl() { this.Location = new Point(50, 50); this.Size = new Size(200, 200); this.BackColor = SystemColors.ActiveBorder; if (Application.RenderWithVisualStyles && VisualStyleRenderer.IsElementDefined(element)) { renderer = new VisualStyleRenderer(element); } }
private: VisualStyleRenderer^ renderer; VisualStyleElement^ element; public: CustomControl() { this->Location = Point(50, 50); this->Size = System::Drawing::Size(200, 200); this->BackColor = SystemColors::ActiveBorder; this->element = VisualStyleElement::StartPanel::LogOffButtons::Normal; if (Application::RenderWithVisualStyles && VisualStyleRenderer::IsElementDefined(element)) { renderer = gcnew VisualStyleRenderer(element); } }
DrawBackground 메서드를 호출하여 VisualStyleRenderer가 현재 나타내고 있는 요소를 렌더링합니다.
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) ' Draw the element if the renderer has been set. If (renderer IsNot Nothing) Then renderer.DrawBackground(e.Graphics, Me.ClientRectangle) ' Visual styles are disabled or the element is undefined, ' so just draw a message. Else Me.Text = "Visual styles are disabled." TextRenderer.DrawText(e.Graphics, Me.Text, Me.Font, _ New Point(0, 0), Me.ForeColor) End If End Sub
protected override void OnPaint(PaintEventArgs e) { // Draw the element if the renderer has been set. if (renderer != null) { renderer.DrawBackground(e.Graphics, this.ClientRectangle); } // Visual styles are disabled or the element is undefined, // so just draw a message. else { this.Text = "Visual styles are disabled."; TextRenderer.DrawText(e.Graphics, this.Text, this.Font, new Point(0, 0), this.ForeColor); } }
protected: virtual void OnPaint(PaintEventArgs^ e) override { // Draw the element if the renderer has been set. if (renderer != nullptr) { renderer->DrawBackground(e->Graphics, this->ClientRectangle); } // Visual styles are disabled or the element is undefined, // so just draw a message. else { this->Text = "Visual styles are disabled."; TextRenderer::DrawText(e->Graphics, this->Text, this->Font, Point(0, 0), this->ForeColor); } }
코드 컴파일
이 예제에는 다음 사항이 필요합니다.
Control 클래스에서 파생된 사용자 지정 컨트롤
사용자 지정 컨트롤을 호스팅하는 Form
System, System.Drawing, System.Windows.Forms 및 System.Windows.Forms.VisualStyles 네임스페이스에 대한 참조