ButtonRenderer Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt methoden voor het weergeven van een knopbesturing met of zonder visuele stijlen. Deze klasse kan niet worden overgenomen.
public ref class ButtonRenderer sealed
public ref class ButtonRenderer abstract sealed
public sealed class ButtonRenderer
public static class ButtonRenderer
type ButtonRenderer = class
Public NotInheritable Class ButtonRenderer
Public Class ButtonRenderer
- Overname
-
ButtonRenderer
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een aangepast besturingselement maakt dat gebruikmaakt van de DrawButton methode om een knop te tekenen. Wanneer op de knop wordt geklikt, tekent het besturingselement een kleinere knop binnen de grenzen van de oorspronkelijke knop en gebruikt het besturingselement de DrawParentBackground methode om de rest van de oorspronkelijke knop te schilderen.
#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 ButtonRendererSample
{
public ref class CustomButton : public Control
{
private:
Rectangle clickRectangleValue;
private:
PushButtonState state;
public:
CustomButton()
{
__super::Control();
this->Size = System::Drawing::Size(100, 40);
this->Location = Point(50, 50);
this->Font = SystemFonts::IconTitleFont;
this->Text = "Click here";
clickRectangleValue = Rectangle();
state = PushButtonState::Normal;
}
// Define the bounds of the smaller pressed button.
public:
property Rectangle ClickRectangle
{
Rectangle get()
{
clickRectangleValue.X = ClientRectangle.X +
(int)(.2 * ClientRectangle.Width);
clickRectangleValue.Y = ClientRectangle.Y +
(int)(.2 * ClientRectangle.Height);
clickRectangleValue.Width = ClientRectangle.Width -
(int)(.4 * ClientRectangle.Width);
clickRectangleValue.Height = ClientRectangle.Height -
(int)(.4 * ClientRectangle.Height);
return clickRectangleValue;
}
}
// Draw the large or small button, depending on the current state.
protected:
virtual void OnPaint(PaintEventArgs^ e) override
{
__super::OnPaint(e);
// Draw the smaller pressed button image
if (state == PushButtonState::Pressed)
{
// Set the background color to the parent if visual styles
// are disabled, because DrawParentBackground will only paint
// over the control background if visual styles are enabled.
if (Application::RenderWithVisualStyles)
{
this->BackColor = Color::Azure;
}
else
{
this->BackColor = this->Parent->BackColor;
}
// If you comment out the call to DrawParentBackground,
// the background of the control will still be visible
// outside the pressed button, if visual styles are enabled.
ButtonRenderer::DrawParentBackground(e->Graphics,
ClientRectangle, this);
ButtonRenderer::DrawButton(e->Graphics, ClickRectangle,
this->Text, this->Font, true, state);
}
// Draw the bigger unpressed button image.
else
{
ButtonRenderer::DrawButton(e->Graphics, ClientRectangle,
this->Text, this->Font, false, state);
}
}
// Draw the smaller pressed button image.
protected:
virtual void OnMouseDown(MouseEventArgs^ e) override
{
__super::OnMouseDown(e);
this->Text = "Clicked!";
state = PushButtonState::Pressed;
Invalidate();
}
// Draw the button in the hot state.
protected:
virtual void OnMouseEnter(EventArgs^ e) override
{
__super::OnMouseEnter(e);
this->Text = "Click here";
state = PushButtonState::Hot;
Invalidate();
}
// Draw the button in the unpressed state.
protected:
virtual void OnMouseLeave(EventArgs^ e) override
{
__super::OnMouseLeave(e);
this->Text = "Click here";
state = PushButtonState::Normal;
Invalidate();
}
// Draw the button hot if the mouse is released on the button.
protected:
virtual void OnMouseUp(MouseEventArgs^ e) override
{
__super::OnMouseUp(e);
OnMouseEnter(e);
}
// Detect when the cursor leaves the button area while
// it is pressed.
protected:
virtual void OnMouseMove(MouseEventArgs^ e) override
{
__super::OnMouseMove(e);
// Detect when the left mouse button is down and
// the cursor has left the pressed button area.
if ((e->Button & ::MouseButtons::Left) == ::MouseButtons::Left &&
!ClientRectangle.Contains(e->Location) &&
state == PushButtonState::Pressed)
{
OnMouseLeave(e);
}
}
};
ref class Form1 : public Form
{
public:
Form1()
{
__super::Form();
CustomButton^ Button1 = gcnew CustomButton();
Controls->Add(Button1);
if (Application::RenderWithVisualStyles)
{
this->Text = "Visual Styles Enabled";
}
else
{
this->Text = "Visual Styles Disabled";
}
}
};
}
using namespace ButtonRendererSample;
[STAThread]
int main()
{
// If you do not call EnableVisualStyles below, then
// ButtonRenderer automatically detects this and draws
// the button without visual styles.
Application::EnableVisualStyles();
Application::Run(gcnew Form1());
}
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
namespace ButtonRendererSample
{
class Form1 : Form
{
public Form1()
: base()
{
CustomButton Button1 = new CustomButton();
Controls.Add(Button1);
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
// ButtonRenderer automatically detects this and draws
// the button without visual styles.
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
public class CustomButton : Control
{
private Rectangle clickRectangleValue = new Rectangle();
private PushButtonState state = PushButtonState.Normal;
public CustomButton()
: base()
{
this.Size = new Size(100, 40);
this.Location = new Point(50, 50);
this.Font = SystemFonts.IconTitleFont;
this.Text = "Click here";
}
// Define the bounds of the smaller pressed button.
public Rectangle ClickRectangle
{
get
{
clickRectangleValue.X = ClientRectangle.X +
(int)(.2 * ClientRectangle.Width);
clickRectangleValue.Y = ClientRectangle.Y +
(int)(.2 * ClientRectangle.Height);
clickRectangleValue.Width = ClientRectangle.Width -
(int)(.4 * ClientRectangle.Width);
clickRectangleValue.Height = ClientRectangle.Height -
(int)(.4 * ClientRectangle.Height);
return clickRectangleValue;
}
}
// Draw the large or small button, depending on the current state.
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// Draw the smaller pressed button image
if (state == PushButtonState.Pressed)
{
// Set the background color to the parent if visual styles
// are disabled, because DrawParentBackground will only paint
// over the control background if visual styles are enabled.
this.BackColor = Application.RenderWithVisualStyles ?
Color.Azure : this.Parent.BackColor;
// If you comment out the call to DrawParentBackground,
// the background of the control will still be visible
// outside the pressed button, if visual styles are enabled.
ButtonRenderer.DrawParentBackground(e.Graphics,
ClientRectangle, this);
ButtonRenderer.DrawButton(e.Graphics, ClickRectangle,
this.Text, this.Font, true, state);
}
// Draw the bigger unpressed button image.
else
{
ButtonRenderer.DrawButton(e.Graphics, ClientRectangle,
this.Text, this.Font, false, state);
}
}
// Draw the smaller pressed button image.
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
this.Text = "Clicked!";
state = PushButtonState.Pressed;
Invalidate();
}
// Draw the button in the hot state.
protected override void OnMouseEnter(EventArgs e)
{
base.OnMouseEnter(e);
this.Text = "Click here";
state = PushButtonState.Hot;
Invalidate();
}
// Draw the button in the unpressed state.
protected override void OnMouseLeave(EventArgs e)
{
base.OnMouseLeave(e);
this.Text = "Click here";
state = PushButtonState.Normal;
Invalidate();
}
// Draw the button hot if the mouse is released on the button.
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
OnMouseEnter(e);
}
// Detect when the cursor leaves the button area while
// it is pressed.
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
// Detect when the left mouse button is down and
// the cursor has left the pressed button area.
if ((e.Button & MouseButtons.Left) == MouseButtons.Left &&
!ClientRectangle.Contains(e.Location) &&
state == PushButtonState.Pressed)
{
OnMouseLeave(e);
}
}
}
}
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles
Namespace ButtonRendererSample
Class Form1
Inherits Form
Public Sub New()
Dim Button1 As New CustomButton()
Controls.Add(Button1)
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
' ButtonRenderer automatically detects this and draws
' the button without visual styles.
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
End Class
Public Class CustomButton
Inherits Control
Private clickRectangleValue As New Rectangle()
Private state As PushButtonState = PushButtonState.Normal
Public Sub New()
With Me
Size = New Size(100, 40)
Location = New Point(50, 50)
Font = SystemFonts.IconTitleFont
Text = "Click here"
End With
End Sub
' Define the bounds of the smaller pressed button.
Public ReadOnly Property ClickRectangle() As Rectangle
Get
With clickRectangleValue
.X = Me.ClientRectangle.X + CInt(0.2 * _
Me.ClientRectangle.Width)
.Y = Me.ClientRectangle.Y + CInt(0.2 * _
Me.ClientRectangle.Height)
.Width = Me.ClientRectangle.Width - _
CInt(0.4 * Me.ClientRectangle.Width)
.Height = Me.ClientRectangle.Height - _
CInt(0.4 * Me.ClientRectangle.Height)
End With
Return clickRectangleValue
End Get
End Property
' Draw the large or small button, depending on the current state.
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
' Draw the smaller pressed button image.
If state = PushButtonState.Pressed Then
' Set the background color to the parent if visual styles
' are disabled, because DrawParentBackground will only paint
' over the control background if visual styles are enabled.
If Application.RenderWithVisualStyles Then
Me.BackColor = Color.Azure
Else
Me.BackColor = Me.Parent.BackColor
End If
' If you comment out the call to DrawParentBackground,
' the background of the control will still be visible
' outside the pressed button, if visual styles are enabled.
ButtonRenderer.DrawParentBackground(e.Graphics, _
Me.ClientRectangle, Me)
ButtonRenderer.DrawButton(e.Graphics, ClickRectangle, _
Me.Text, Me.Font, True, state)
' Draw the bigger unpressed button image.
Else
ButtonRenderer.DrawButton(e.Graphics, Me.ClientRectangle, _
Me.Text, Me.Font, False, state)
End If
End Sub
' Draw the smaller pressed button image.
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
MyBase.OnMouseDown(e)
With Me
.Text = "Clicked!"
.state = PushButtonState.Pressed
End With
Invalidate()
End Sub
' Draw the button in the hot state.
Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
MyBase.OnMouseEnter(e)
With Me
.Text = "Click here"
.state = PushButtonState.Hot
End With
Invalidate()
End Sub
' Draw the button in the unpressed state.
Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
MyBase.OnMouseLeave(e)
With Me
.Text = "Click here"
.state = PushButtonState.Normal
End With
Invalidate()
End Sub
' Draw the button hot if the mouse is released on the button.
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
MyBase.OnMouseUp(e)
OnMouseEnter(e)
End Sub
' Detect when the cursor leaves the button area while it
' is pressed.
Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
MyBase.OnMouseMove(e)
' Detect when the left mouse button is down and
' the cursor has left the pressed button area.
If (e.Button And MouseButtons.Left) = MouseButtons.Left And Not _
Me.ClientRectangle.Contains(e.Location) And _
state = PushButtonState.Pressed Then
OnMouseLeave(e)
End If
End Sub
End Class
End Namespace
Opmerkingen
De ButtonRenderer klasse biedt een set static methoden die kunnen worden gebruikt om een knop besturingselement weer te geven. Het weergeven van een besturingselement verwijst naar het tekenen van de gebruikersinterface van een besturingselement. Als u een knop wilt tekenen, gebruikt u een van de DrawButton methoden. Deze methoden bieden verschillende opties, zoals tekentekst of een afbeelding op de knop.
Als visuele stijlen zijn ingeschakeld in het besturingssysteem en visuele stijlen worden toegepast op de huidige toepassing, DrawButton tekent u de knop met de huidige visuele stijl. Anders tekent DrawButton de knop met de klassieke stijl Windows. Dit is handig als u een aangepast besturingselement tekent dat automatisch overeenkomt met de huidige instelling van de visuele stijl van het besturingssysteem.
Deze klasse verpakt de functionaliteit van een System.Windows.Forms.VisualStyles.VisualStyleRenderer die is ingesteld op een van de elementen die worden weergegeven door de klasse System.Windows.Forms.VisualStyles.VisualStyleElement.Button.PushButton. Zie Weergavebesturingselementen met visuele stijlen voor meer informatie.
Eigenschappen
| Name | Description |
|---|---|
| RenderMatchingApplicationState |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de renderer de toepassingsstatus gebruikt om de weergavestijl te bepalen. |
Methoden
| Name | Description |
|---|---|
| DrawButton(Graphics, Rectangle, Boolean, PushButtonState) |
Hiermee tekent u een knop in de opgegeven status en grenzen, en met een optionele focusrechthoek. |
| DrawButton(Graphics, Rectangle, Image, Rectangle, Boolean, PushButtonState) |
Hiermee tekent u een knop in de opgegeven status en grenzen, met de opgegeven afbeelding en met een optionele focusrechthoek. |
| DrawButton(Graphics, Rectangle, PushButtonState) |
Hiermee tekent u een knop in de opgegeven status en grenzen. |
| DrawButton(Graphics, Rectangle, String, Font, Boolean, PushButtonState) |
Hiermee tekent u een knop in de opgegeven status en grenzen, met de opgegeven tekst en met een optionele focusrechthoek. |
| DrawButton(Graphics, Rectangle, String, Font, Image, Rectangle, Boolean, PushButtonState) |
Hiermee tekent u een knop in de opgegeven status en grenzen, met de opgegeven tekst en afbeelding en met een optionele focusrechthoek. |
| DrawButton(Graphics, Rectangle, String, Font, TextFormatFlags, Boolean, PushButtonState) |
Hiermee tekent u een knop in de opgegeven status en grenzen, met de opgegeven tekst- en tekstopmaak en met een optionele focusrechthoek. |
| DrawButton(Graphics, Rectangle, String, Font, TextFormatFlags, Image, Rectangle, Boolean, PushButtonState) |
Hiermee tekent u een knop in de opgegeven status en grenzen; met de opgegeven tekst, tekstopmaak en afbeelding; en met een optionele focusrechthoek. |
| DrawParentBackground(Graphics, Rectangle, Control) |
Hiermee tekent u de achtergrond van het bovenliggende besturingselement in het opgegeven gebied. |
| IsBackgroundPartiallyTransparent(PushButtonState) |
Hiermee wordt aangegeven of de achtergrond van de knop semitransparante of alfa-gemengde stukken bevat. |