CheckBoxRenderer Classe

Definição

Fornece métodos usados para renderizar um controlo de caixa de seleção com ou sem estilos visuais. Esta classe não pode ser herdada.

public ref class CheckBoxRenderer sealed
public sealed class CheckBoxRenderer
type CheckBoxRenderer = class
Public NotInheritable Class CheckBoxRenderer
Herança
CheckBoxRenderer

Exemplos

O exemplo de código seguinte demonstra como escrever um controlo personalizado que utiliza o DrawCheckBox método para desenhar uma caixa de seleção que responde a cliques do rato.

#using <System.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::VisualStyles;

namespace CheckBoxRendererSample
{
    ref class CustomCheckBox : Control
    {
        private:
        Rectangle textRectangleValue;
        Point clickedLocationValue;
        bool clicked;
        CheckBoxState state;

        public :
        CustomCheckBox() : Control()
        {
            this->textRectangleValue = Rectangle();
            this->clickedLocationValue = Point();
            this->clicked = false;
            this->state = CheckBoxState::UncheckedNormal;
            this->Location = Point(50, 50);
            this->Size = System::Drawing::Size(100, 20);
            this->Text = "Click here";
            this->Font = SystemFonts::IconTitleFont;
        }

        // Calculate the text bounds, exluding the check box.
        Rectangle getTextRectangle()
        {
            Graphics ^g = this->CreateGraphics();
            textRectangleValue.X = ClientRectangle.X +
                        CheckBoxRenderer::GetGlyphSize(g,
                        CheckBoxState::UncheckedNormal).Width;
            textRectangleValue.Y = ClientRectangle.Y;
            textRectangleValue.Width = ClientRectangle.Width -
                        CheckBoxRenderer::GetGlyphSize(g,
                        CheckBoxState::UncheckedNormal).Width;
            textRectangleValue.Height = ClientRectangle.Height;

            delete g;
            return textRectangleValue;
        }

protected:
        // Draw the check box in the current state.
        virtual void OnPaint(PaintEventArgs ^e) override
        {
            Control::OnPaint(e);

            CheckBoxRenderer::DrawCheckBox(e->Graphics,
                ClientRectangle.Location, this->getTextRectangle(), this->Text,
                this->Font, TextFormatFlags::HorizontalCenter,
                clicked, state);
        }


        // Draw the check box in the checked or unchecked state, alternately.
        virtual void OnMouseDown(MouseEventArgs ^e) override
        {
            Control::OnMouseDown(e);

            if (!clicked)
            {
                clicked = true;
                this->Text = "Clicked!";
                state = CheckBoxState::CheckedPressed;
                Invalidate();
            }
            else
            {
                clicked = false;
                this->Text = "Click here";
                state = CheckBoxState::UncheckedNormal;
                Invalidate();
            }
        }

        // Draw the check box in the hot state. 
        virtual void OnMouseHover(EventArgs ^e) override
        {
            Control::OnMouseHover(e);
            state = clicked ? CheckBoxState::CheckedHot :
                CheckBoxState::UncheckedHot;
            Invalidate();
        }

        // Draw the check box in the hot state. 
        virtual void OnMouseUp(MouseEventArgs ^e) override
        {
            Control::OnMouseUp(e);
            this->OnMouseHover(e);
        }

        // Draw the check box in the unpressed state.
        virtual void OnMouseLeave(EventArgs ^e) override
        {
            Control::OnMouseLeave(e);
            state = clicked ? CheckBoxState::CheckedNormal :
                CheckBoxState::UncheckedNormal;
            Invalidate();
        } 
    }; 

    ref class Form1: public Form
    {
    public:
        Form1() : Form() 
        {
            CustomCheckBox ^CheckBox1 = gcnew CustomCheckBox();
            Controls->Add(CheckBox1);

            if (Application::RenderWithVisualStyles) 
            {
                this->Text = "Visual Styles Enabled";
            }
            else 
            {
                this->Text = "Visual Styles Disabled";
            }
        }
    };
}


[STAThread]
int main()
{
    // If you do not call EnableVisualStyles below, then 
    // CheckBoxRenderer.DrawCheckBox automatically detects 
    // this and draws the check box without visual styles.
    Application::EnableVisualStyles();
    Application::Run(gcnew CheckBoxRendererSample::Form1());
}
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;

namespace CheckBoxRendererSample
{
    class Form1 : Form
    {
        public Form1()
            : base()
        {
            CustomCheckBox CheckBox1 = new CustomCheckBox();
            Controls.Add(CheckBox1);

            if (Application.RenderWithVisualStyles)
                this.Text = "Visual Styles Enabled";
            else
                this.Text = "Visual Styles Disabled";
        }

        [STAThread]
        static void Main()
        {
            // If you do not call EnableVisualStyles below, then 
            // CheckBoxRenderer.DrawCheckBox automatically detects 
            // this and draws the check box without visual styles.
            Application.EnableVisualStyles();
            Application.Run(new Form1());
        }
    }

    public class CustomCheckBox : Control
    {
        private Rectangle textRectangleValue = new Rectangle();
        private Point clickedLocationValue = new Point();
        private bool clicked = false;
        private CheckBoxState state = CheckBoxState.UncheckedNormal;

        public CustomCheckBox()
            : base()
        {
            this.Location = new Point(50, 50);
            this.Size = new Size(100, 20);
            this.Text = "Click here";
            this.Font = SystemFonts.IconTitleFont;
        }

        // Calculate the text bounds, exluding the check box.
        public Rectangle TextRectangle
        {
            get
            {
                using (Graphics g = this.CreateGraphics())
                {
                    textRectangleValue.X = ClientRectangle.X +
                        CheckBoxRenderer.GetGlyphSize(g,
                        CheckBoxState.UncheckedNormal).Width;
                    textRectangleValue.Y = ClientRectangle.Y;
                    textRectangleValue.Width = ClientRectangle.Width -
                        CheckBoxRenderer.GetGlyphSize(g,
                        CheckBoxState.UncheckedNormal).Width;
                    textRectangleValue.Height = ClientRectangle.Height;
                }

                return textRectangleValue;
            }
        }

        // Draw the check box in the current state.
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            CheckBoxRenderer.DrawCheckBox(e.Graphics,
                ClientRectangle.Location, TextRectangle, this.Text,
                this.Font, TextFormatFlags.HorizontalCenter,
                clicked, state);
        }

        // Draw the check box in the checked or unchecked state, alternately.
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);

            if (!clicked)
            {
                clicked = true;
                this.Text = "Clicked!";
                state = CheckBoxState.CheckedPressed;
                Invalidate();
            }
            else
            {
                clicked = false;
                this.Text = "Click here";
                state = CheckBoxState.UncheckedNormal;
                Invalidate();
            }
        }

        // Draw the check box in the hot state. 
        protected override void OnMouseHover(EventArgs e)
        {
            base.OnMouseHover(e);
            state = clicked ? CheckBoxState.CheckedHot :
                CheckBoxState.UncheckedHot;
            Invalidate();
        }

        // Draw the check box in the hot state. 
        protected override void OnMouseUp(MouseEventArgs e)
        {
            base.OnMouseUp(e);
            this.OnMouseHover(e);
        }

        // Draw the check box in the unpressed state.
        protected override void OnMouseLeave(EventArgs e)
        {
            base.OnMouseLeave(e);
            state = clicked ? CheckBoxState.CheckedNormal :
                CheckBoxState.UncheckedNormal;
            Invalidate();
        }
    }
}
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles

Namespace CheckBoxRendererSample

    Class Form1
        Inherits Form

        Public Sub New()
            Dim CheckBox1 As New CustomCheckBox()
            Controls.Add(CheckBox1)

            If Application.RenderWithVisualStyles Then
                Me.Text = "Visual Styles Enabled"
            Else
                Me.Text = "Visual Styles Disabled"
            End If
        End Sub

        <STAThread()> _
        Shared Sub Main()
            ' If you do not call EnableVisualStyles below, then 
            ' CheckBoxRenderer.DrawCheckBox automatically detects   
            ' this and draws the check box without visual styles.
            Application.EnableVisualStyles()
            Application.Run(New Form1())
        End Sub
    End Class

    Public Class CustomCheckBox
        Inherits Control

        Private textRectangleValue As New Rectangle()
        Private clickedLocationValue As New Point()
        Private clicked As Boolean = False
        Private state As CheckBoxState = CheckBoxState.UncheckedNormal

        Public Sub New()
            With Me
                .Location = New Point(50, 50)
                .Size = New Size(100, 20)
                .Text = "Click here"
                .Font = SystemFonts.IconTitleFont
            End With
        End Sub

        ' Calculate the text bounds, exluding the check box.
        Public ReadOnly Property TextRectangle() As Rectangle
            Get
                Using g As Graphics = Me.CreateGraphics()
                    With textRectangleValue
                        .X = Me.ClientRectangle.X + _
                            CheckBoxRenderer.GetGlyphSize(g, _
                            CheckBoxState.UncheckedNormal).Width
                        .Y = Me.ClientRectangle.Y
                        .Width = Me.ClientRectangle.Width - _
                            CheckBoxRenderer.GetGlyphSize(g, _
                            CheckBoxState.UncheckedNormal).Width
                        .Height = Me.ClientRectangle.Height
                    End With
                End Using
                Return textRectangleValue
            End Get
        End Property

        ' Draw the check box in the current state.
        Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
            MyBase.OnPaint(e)
            CheckBoxRenderer.DrawCheckBox(e.Graphics, _
                Me.ClientRectangle.Location, TextRectangle, Me.Text, _
                Me.Font, TextFormatFlags.HorizontalCenter, _
                clicked, state)
        End Sub

        ' Draw the check box in the checked or unchecked state, alternately.
        Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
            MyBase.OnMouseDown(e)
            If Not clicked Then
                With Me
                    .clicked = True
                    .Text = "Clicked!"
                    .state = CheckBoxState.CheckedPressed
                End With
                Invalidate()
            Else
                With Me
                    .clicked = False
                    .Text = "Click here"
                    .state = CheckBoxState.UncheckedNormal
                End With
                Invalidate()
            End If
        End Sub

        ' Draw the check box in the hot state. 
        Protected Overrides Sub OnMouseHover(ByVal e As EventArgs)
            MyBase.OnMouseHover(e)
            If clicked Then
                state = CheckBoxState.CheckedHot
            Else
                state = CheckBoxState.UncheckedHot
            End If
            Invalidate()
        End Sub

        ' Draw the check box in the hot state. 
        Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
            MyBase.OnMouseUp(e)
            Me.OnMouseHover(e)
        End Sub

        ' Draw the check box in the unpressed state.
        Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
            MyBase.OnMouseLeave(e)
            If clicked Then
                state = CheckBoxState.CheckedNormal
            Else
                state = CheckBoxState.UncheckedNormal
            End If
            Invalidate()
        End Sub

    End Class
End Namespace

Observações

A CheckBoxRenderer classe fornece um conjunto de static métodos que podem ser usados para renderizar um controlo de caixa de seleção. Renderizar um controle refere-se a desenhar a interface do usuário de um controle. Para desenhar uma caixa, use um dos DrawCheckBox métodos. Estes métodos oferecem várias opções, como desenhar texto ou uma imagem com a caixa de seleção.

Se os estilos visuais estiverem ativados no sistema operativo e os estilos visuais forem aplicados à aplicação atual, DrawCheckBox desenhará a caixa de seleção com o estilo visual atual. Caso contrário, DrawCheckBox vai desenhar a caixa de seleção com o estilo clássico Windows. Isto é útil se estiveres a desenhar um controlo personalizado que deva corresponder automaticamente à definição atual de estilo visual do sistema operativo.

Esta classe envolve a funcionalidade de um System.Windows.Forms.VisualStyles.VisualStyleRenderer definido para um dos elementos expostos pela classe System.Windows.Forms.VisualStyles.VisualStyleElement.Button.CheckBox. Para mais informações, consulte Controlos de Renderização com Estilos Visuais.

Propriedades

Name Description
RenderMatchingApplicationState

Recebe ou define um valor que indica se o renderizador usa o estado da aplicação para determinar o estilo de renderização.

Métodos

Name Description
DrawCheckBox(Graphics, Point, CheckBoxState)

Desenha um controlo de caixa de seleção no estado e localização especificados.

DrawCheckBox(Graphics, Point, Rectangle, String, Font, Boolean, CheckBoxState)

Desenha um controlo de caixa de seleção no estado e localização especificados, com o texto especificado, e com um retângulo de foco opcional.

DrawCheckBox(Graphics, Point, Rectangle, String, Font, Image, Rectangle, Boolean, CheckBoxState)

Desenha um controlo de caixa de seleção no estado e localização especificados, com o texto e a imagem especificados, e com um retângulo de foco opcional.

DrawCheckBox(Graphics, Point, Rectangle, String, Font, TextFormatFlags, Boolean, CheckBoxState)

Desenha um controlo de caixa de seleção no estado e localização especificados, com o texto e a formatação de texto especificados, e com um retângulo de foco opcional.

DrawCheckBox(Graphics, Point, Rectangle, String, Font, TextFormatFlags, Image, Rectangle, Boolean, CheckBoxState)

Desenha um controlo de caixa de seleção no estado e localização especificados; com o texto especificado, a formatação do texto e a imagem; e com um retângulo de foco opcional.

DrawParentBackground(Graphics, Rectangle, Control)

Desenha o fundo do pai de um controlo na área especificada.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetGlyphSize(Graphics, CheckBoxState)

Devolve o tamanho do glifo da caixa de seleção.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsBackgroundPartiallyTransparent(CheckBoxState)

Indica se o fundo da caixa de seleção tem peças semitransparentes ou alfa-misturadas.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também