CheckBoxRenderer Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit les méthodes utilisées pour restituer un contrôle Check Box avec ou sans styles visuels. Cette classe ne peut pas être héritée.
public ref class CheckBoxRenderer sealed
public ref class CheckBoxRenderer abstract sealed
public sealed class CheckBoxRenderer
public static class CheckBoxRenderer
type CheckBoxRenderer = class
Public NotInheritable Class CheckBoxRenderer
Public Class CheckBoxRenderer
- Héritage
-
CheckBoxRenderer
Exemples
L’exemple de code suivant montre comment écrire un contrôle personnalisé qui utilise la DrawCheckBox méthode pour dessiner une case à cocher qui répond aux clics de souris.
#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
Remarques
La CheckBoxRenderer classe fournit un ensemble de static
méthodes qui peuvent être utilisées pour afficher un contrôle de case à cocher. Le rendu d’un contrôle fait référence au dessin de l’interface utilisateur d’un contrôle. Pour dessiner une case à cocher, utilisez l’une DrawCheckBox des méthodes . Ces méthodes fournissent diverses options, telles que le dessin de texte ou une image avec la case à cocher.
Si les styles visuels sont activés dans le système d’exploitation et que les styles visuels sont appliqués à l’application actuelle, DrawCheckBox dessine la case à cocher avec le style visuel actuel. Sinon, DrawCheckBox dessine la case à cocher avec le style Windows classique. Cela est utile si vous dessinez un contrôle personnalisé qui doit correspondre automatiquement au paramètre de style visuel actuel du système d’exploitation.
Cette classe encapsule les fonctionnalités d’un System.Windows.Forms.VisualStyles.VisualStyleRenderer qui est défini sur l’un des éléments exposés par la System.Windows.Forms.VisualStyles.VisualStyleElement.Button.CheckBox classe . Pour plus d’informations, consultez Rendu des contrôles avec les styles visuels.
Propriétés
RenderMatchingApplicationState |
Obtient ou définit une valeur indiquant si le convertisseur utilise l'état de l'application pour déterminer le style de rendu. |
Méthodes
DrawCheckBox(Graphics, Point, CheckBoxState) |
Dessine un contrôle Check Box dans l'état et l'emplacement spécifiés. |
DrawCheckBox(Graphics, Point, Rectangle, String, Font, Boolean, CheckBoxState) |
Dessine un contrôle Check Box dans l'état et l'emplacement spécifiés, avec le texte spécifié et un rectangle de focus facultatif. |
DrawCheckBox(Graphics, Point, Rectangle, String, Font, Image, Rectangle, Boolean, CheckBoxState) |
Dessine un contrôle Check Box dans l'état et l'emplacement spécifiés, avec le texte et l'image spécifiés, et un rectangle de focus facultatif. |
DrawCheckBox(Graphics, Point, Rectangle, String, Font, TextFormatFlags, Boolean, CheckBoxState) |
Dessine un contrôle Check Box dans l'état et l'emplacement spécifiés, avec le texte et la mise en forme du texte, et un rectangle de focus facultatif. |
DrawCheckBox(Graphics, Point, Rectangle, String, Font, TextFormatFlags, Image, Rectangle, Boolean, CheckBoxState) |
Dessine un contrôle Check Box dans l'état et l'emplacement spécifiés, avec le texte, la mise en forme du texte, une image et un rectangle de focus facultatif. |
DrawParentBackground(Graphics, Rectangle, Control) |
Dessine l’arrière-plan du parent d’un contrôle dans la zone spécifiée. |
GetGlyphSize(Graphics, CheckBoxState) |
Retourne la taille du glyphe de la case à cocher. |
IsBackgroundPartiallyTransparent(CheckBoxState) |
Indique si l'arrière-plan de la case à cocher a des parties translucides ou à contrôle alpha. |