Compartir a través de


Procedimiento para representar un elemento de estilo visual

El espacio de nombres System.Windows.Forms.VisualStyles expone objetos VisualStyleElement que representan los elementos de la interfaz de usuario (UI) de Windows compatibles con los estilos visuales. En este tema se describe cómo usar la clase VisualStyleRenderer para representar el objeto VisualStyleElement que representa los botones Cerrar sesión y Apagar del menú Inicio.

Para representar un elemento de estilo visual

  1. Cree un objeto VisualStyleRenderer y establézcalo en el elemento que quiera dibujar. Tenga en cuenta el uso de la propiedad Application.RenderWithVisualStyles y del método VisualStyleRenderer.IsElementDefined; el constructor VisualStyleRenderer producirá una excepción si los estilos visuales están deshabilitados o si un elemento no está definido.

    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. Llame al método DrawBackground para representar el elemento que VisualStyleRenderer representa actualmente.

    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
    

Compilar el código

Para este ejemplo se necesita:

Vea también