Gewusst wie: Rendern eines visuellen Stilelements

Aktualisiert: November 2007

Der System.Windows.Forms.VisualStyles-Namespace macht VisualStyleElement-Objekte verfügbar, die den von visuellen Stilen unterstützten Windows-Benutzeroberflächenelementen entsprechen. Dieses Thema zeigt, wie die VisualStyleRenderer-Klasse zum Rendern des VisualStyleElement verwendet wird, das den Schaltflächen Abmelden und Beenden im Startmenü entspricht.

So rendern Sie ein visuelles Stilelement

  1. Erstellen Sie einen VisualStyleRenderer, und legen Sie ihn auf das Element fest, das Sie zeichnen möchten. Beachten Sie die Verwendung der Application.RenderWithVisualStyles-Eigenschaft und der VisualStyleRenderer.IsElementDefined-Methode. Der VisualStyleRenderer-Konstruktor löst eine Ausnahme aus, wenn visuelle Stile deaktiviert sind oder ein Element nicht definiert ist.

    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);
            }
        }
    
  2. Rufen Sie die DrawBackground-Methode auf, um das Element zu rendern, das der VisualStyleRenderer derzeit darstellt.

    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);
            }
        }
    

Kompilieren des Codes

Für dieses Beispiel ist Folgendes erforderlich:

Siehe auch

Konzepte

Rendering von Steuerelementen mit visuellen Stilen