CheckBoxRenderer Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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) |