GroupBoxRenderer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece os métodos usados para renderizar um controle de caixa de grupo com ou sem estilos visuais. Essa classe não pode ser herdada.
public ref class GroupBoxRenderer sealed
public ref class GroupBoxRenderer abstract sealed
public sealed class GroupBoxRenderer
public static class GroupBoxRenderer
type GroupBoxRenderer = class
Public NotInheritable Class GroupBoxRenderer
Public Class GroupBoxRenderer
- Herança
-
GroupBoxRenderer
Exemplos
O exemplo de código a seguir demonstra como criar um controle personalizado que usa o DrawGroupBox método para desenhar uma caixa de grupo com uma borda dupla se os estilos visuais estiverem habilitados.
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>
#using <System.dll>
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::VisualStyles;
namespace GroupBoxRendererSample
{
public ref class CustomGroupBox : public Control
{
private:
Rectangle innerRectangle;
private:
GroupBoxState state;
private:
FlowLayoutPanel^ panel;
public:
CustomGroupBox() : Control()
{
innerRectangle = Rectangle();
state = GroupBoxState::Normal;
panel = gcnew FlowLayoutPanel();
this->Size = System::Drawing::Size(200, 200);
this->Location = Point(10, 10);
this->Controls->Add(panel);
this->Text = "CustomGroupBox";
this->Font = SystemFonts::IconTitleFont;
innerRectangle.X = ClientRectangle.X + 5;
innerRectangle.Y = ClientRectangle.Y + 15;
innerRectangle.Width = ClientRectangle.Width - 10;
innerRectangle.Height = ClientRectangle.Height - 20;
panel->FlowDirection = FlowDirection::TopDown;
panel->Location = Point(innerRectangle.X + 5,
innerRectangle.Y + 5);
panel->Size = System::Drawing::Size(innerRectangle.Width - 10,
innerRectangle.Height - 10);
}
// Draw the group box in the current state.
protected:
virtual void OnPaint(PaintEventArgs^ e) override
{
__super::OnPaint(e);
GroupBoxRenderer::DrawGroupBox(e->Graphics, ClientRectangle,
this->Text, this->Font, state);
// Draw an additional inner border if visual styles are enabled.
if (Application::RenderWithVisualStyles)
{
GroupBoxRenderer::DrawGroupBox(e->Graphics, innerRectangle,
state);
}
}
// Pass added controls to the internal FlowLayoutPanel.
protected:
virtual void OnControlAdded(ControlEventArgs^ e) override
{
__super::OnControlAdded(e);
// Ensure that you do not add the panel itself.
if (e->Control != this->panel)
{
this->Controls->Remove(e->Control);
panel->Controls->Add(e->Control);
}
}
};
ref class Form1 : public Form
{
public:
Form1() : Form()
{
CustomGroupBox^ groupBox1 = gcnew CustomGroupBox();
groupBox1->Text = "Radio Button Display";
Controls->Add(groupBox1);
// Add some radio buttons to test the CustomGroupBox.
int count = 8;
array<RadioButton^>^ buttonArray =
gcnew array<RadioButton^>(count);
for (int i = 0; i < count; i++)
{
buttonArray[i] = gcnew RadioButton();
buttonArray[i]->Text = "Button " + (i + 1).ToString();
groupBox1->Controls->Add(buttonArray[i]);
}
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
// GroupBoxRenderer automatically detects this and draws
// the group box without visual styles.
Application::EnableVisualStyles();
Application::Run(gcnew GroupBoxRendererSample::Form1());
}
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
namespace GroupBoxRendererSample
{
class Form1 : Form
{
private Button button1;
public Form1()
: base()
{
CustomGroupBox GroupBox1 = new CustomGroupBox();
button1 = new Button();
GroupBox1.Text = "Radio Button Display";
this.button1.Location = new System.Drawing.Point(205, 231);
this.button1.Size = new System.Drawing.Size(105, 23);
this.button1.Text = "Toggle Visual Styles";
this.button1.Click += new System.EventHandler(this.button1_Click);
Controls.Add(GroupBox1);
this.Controls.Add(this.button1);
// Add some radio buttons to test the CustomGroupBox.
int count = 8;
RadioButton[] ButtonArray = new RadioButton[count];
for (int i = 0; i < count; i++)
{
ButtonArray[i] = new RadioButton();
ButtonArray[i].Text = "Button " + (i + 1).ToString();
GroupBox1.Controls.Add(ButtonArray[i]);
}
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
// GroupBoxRenderer automatically detects this and draws
// the group box without visual styles.
Application.EnableVisualStyles();
Application.Run(new Form1());
}
// Match application style and toggle visual styles off
// and on for the application.
private void button1_Click(object sender, EventArgs e)
{
GroupBoxRenderer.RenderMatchingApplicationState = true;
Application.VisualStyleState =
Application.VisualStyleState ^
VisualStyleState.ClientAndNonClientAreasEnabled;
if (Application.RenderWithVisualStyles)
this.Text = "Visual Styles Enabled";
else
this.Text = "Visual Styles Disabled";
}
}
public class CustomGroupBox : Control
{
private Rectangle innerRectangle = new Rectangle();
private GroupBoxState state = GroupBoxState.Normal;
private FlowLayoutPanel panel = new FlowLayoutPanel();
public CustomGroupBox()
: base()
{
this.Size = new Size(200, 200);
this.Location = new Point(10, 10);
this.Controls.Add(panel);
this.Text = "CustomGroupBox";
this.Font = SystemFonts.IconTitleFont;
innerRectangle.X = ClientRectangle.X + 5;
innerRectangle.Y = ClientRectangle.Y + 15;
innerRectangle.Width = ClientRectangle.Width - 10;
innerRectangle.Height = ClientRectangle.Height - 20;
panel.FlowDirection = FlowDirection.TopDown;
panel.Location = new Point(innerRectangle.X + 5,
innerRectangle.Y + 5);
panel.Size = new Size(innerRectangle.Width - 10,
innerRectangle.Height - 10);
}
// Draw the group box in the current state.
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
GroupBoxRenderer.DrawGroupBox(e.Graphics, ClientRectangle,
this.Text, this.Font, state);
// Draw an additional inner border if visual styles are enabled.
if (Application.RenderWithVisualStyles)
{
GroupBoxRenderer.DrawGroupBox(e.Graphics, innerRectangle, state);
}
}
// Pass added controls to the internal FlowLayoutPanel.
protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
// Ensure that you do not add the panel itself.
if (e.Control != this.panel)
{
this.Controls.Remove(e.Control);
panel.Controls.Add(e.Control);
}
}
}
}
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles
Class Form1
Inherits Form
Private WithEvents button1 As Button
Public Sub New()
Dim GroupBox1 As New CustomGroupBox()
button1 = New Button()
GroupBox1.Text = "Radio Button Display"
Me.button1.Location = New System.Drawing.Point(185, 231)
Me.button1.Size = New System.Drawing.Size(105, 23)
Me.button1.Text = "Toggle Visual Styles"
Controls.Add(GroupBox1)
Me.Controls.Add(Me.button1)
' Add some radio buttons to test the CustomGroupBox.
Dim count As Integer = 8
Dim ButtonArray(count) As RadioButton
For i = 0 To count - 1
ButtonArray(i) = New RadioButton()
ButtonArray(i).Text = "Button " +(i + 1).ToString()
GroupBox1.Controls.Add(ButtonArray(i))
Next
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
' GroupBoxRenderer automatically detects this and draws
' the group box without visual styles.
Application.EnableVisualStyles()
Application.Run(New Form1())
End Sub
' Match application style and toggle visual styles off
' and on for the application.
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles button1.Click
GroupBoxRenderer.RenderMatchingApplicationState = True
Application.VisualStyleState = _
Application.VisualStyleState Xor _
VisualStyleState.ClientAndNonClientAreasEnabled
If Application.RenderWithVisualStyles Then
Me.Text = "Visual Styles Enabled"
Else
Me.Text = "Visual Styles Disabled"
End If
End Sub
End Class
Public Class CustomGroupBox
Inherits Control
Private innerRectangle As New Rectangle()
Private state As GroupBoxState = GroupBoxState.Normal
Private panel As New FlowLayoutPanel()
Public Sub New()
Me.Size = New Size(200, 200)
Me.Location = New Point(10, 10)
Me.Controls.Add(panel)
Me.Text = "CustomGroupBox"
Me.Font = SystemFonts.IconTitleFont
innerRectangle.X = ClientRectangle.X + 5
innerRectangle.Y = ClientRectangle.Y + 15
innerRectangle.Width = ClientRectangle.Width - 10
innerRectangle.Height = ClientRectangle.Height - 20
panel.FlowDirection = FlowDirection.TopDown
panel.Location = New Point(innerRectangle.X + 5, innerRectangle.Y + 5)
panel.Size = New Size(innerRectangle.Width - 10, innerRectangle.Height - 10)
End Sub
' Draw the group box in the current state.
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
GroupBoxRenderer.DrawGroupBox(e.Graphics, ClientRectangle, Me.Text, Me.Font, state)
' Draw an additional inner border if visual styles are enabled.
If Application.RenderWithVisualStyles Then
GroupBoxRenderer.DrawGroupBox(e.Graphics, innerRectangle, state)
End If
End Sub
' Pass added controls to the internal FlowLayoutPanel.
Protected Overrides Sub OnControlAdded(ByVal e As ControlEventArgs)
MyBase.OnControlAdded(e)
' Ensure that you do not add the panel itself.
If e.Control IsNot Me.panel Then
Me.Controls.Remove(e.Control)
panel.Controls.Add(e.Control)
End If
End Sub
End Class
Comentários
A GroupBoxRenderer classe fornece um conjunto de static
métodos que podem ser usados para renderizar um controle de caixa de grupo. Renderizar um controle refere-se a desenhar a interface do usuário de um controle. Para desenhar uma caixa de grupo, use um dos DrawGroupBox métodos. Esses métodos fornecem uma variedade de opções de desenho de texto.
Se os estilos visuais estiverem habilitados no sistema operacional e os estilos visuais forem aplicados ao aplicativo atual, DrawGroupBox desenhará a caixa de grupo com o estilo visual atual. Caso contrário, DrawGroupBox desenhará a caixa de grupo com o estilo clássico Windows. Isso será útil se você estiver desenhando um controle personalizado que deve corresponder automaticamente à configuração de estilo visual atual do sistema operacional.
Essa classe encapsula a funcionalidade de um System.Windows.Forms.VisualStyles.VisualStyleRenderer que é definido como um dos elementos expostos pela System.Windows.Forms.VisualStyles.VisualStyleElement.Button.GroupBox classe. Para obter mais informações, consulte Controles de renderização com estilos visuais.
Propriedades
RenderMatchingApplicationState |
Obtém ou define um valor que indica se o renderizador usa o estado do aplicativo para determinar o estilo de renderização. |
Métodos
DrawGroupBox(Graphics, Rectangle, GroupBoxState) |
Desenha um controle de caixa de grupo no estado e nos limites especificados. |
DrawGroupBox(Graphics, Rectangle, String, Font, Color, GroupBoxState) |
Desenha um controle de caixa de grupo no estado e limites especificados, com o texto, fonte e cor especificados. |
DrawGroupBox(Graphics, Rectangle, String, Font, Color, TextFormatFlags, GroupBoxState) |
Desenha um controle de caixa de grupo no estado e limites especificados, com o texto, fonte, cor e formatação de texto especificados. |
DrawGroupBox(Graphics, Rectangle, String, Font, GroupBoxState) |
Desenha um controle de caixa de grupo no estado e limites especificados, com o texto e fonte especificados. |
DrawGroupBox(Graphics, Rectangle, String, Font, TextFormatFlags, GroupBoxState) |
Desenha um controle de caixa de grupo no estado e limites especificados, com o texto, fonte e formatação de texto especificados. |
DrawParentBackground(Graphics, Rectangle, Control) |
Desenha a tela de fundo do pai de um controle na área especificada. |
IsBackgroundPartiallyTransparent(GroupBoxState) |
Indica se a tela de fundo da caixa de grupo tem alguma parte semitransparente ou de combinação alfa. |