Sdílet prostřednictvím


Postupy: Vykreslení elementu vizuálního stylu

Obor názvů System.Windows.Forms.VisualStyles zveřejňuje VisualStyleElement objekty, které představují prvky uživatelského rozhraní systému Windows podporované vizuálními styly. Toto téma ukazuje, jak pomocí třídy VisualStyleRenderer vykreslit VisualStyleElement, která představuje Odhlásit a Vypnout tlačítka nabídky Start.

Vykreslení elementu vizuálního stylu

  1. Vytvořte VisualStyleRenderer a nastavte ho na prvek, který chcete nakreslit. Poznamenejte si použití vlastnosti Application.RenderWithVisualStyles a metody VisualStyleRenderer.IsElementDefined; konstruktor VisualStyleRenderer vyvolá výjimku, pokud jsou styly vizuálů zakázány nebo prvek není definován.

    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);
            }
        }
    
    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 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
    
  2. Zavolejte metodu DrawBackground pro vykreslení prvku, který VisualStyleRenderer aktuálně představuje.

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

Kompilace kódu

Tento příklad vyžaduje:

Viz také