Compartilhar via


ToolStripRenderer Classe

Definição

Manipula a funcionalidade de pintura para objetos ToolStrip.

public ref class ToolStripRenderer abstract
public abstract class ToolStripRenderer
type ToolStripRenderer = class
Public MustInherit Class ToolStripRenderer
Herança
ToolStripRenderer
Derivado

Exemplos

O exemplo de código a seguir demonstra como implementar uma classe personalizada ToolStripRenderer . A GridStripRenderer classe personaliza três aspectos da GridStrip aparência do controle: GridStrip borda, ToolStripButton borda e ToolStripButton imagem. Para obter uma listagem de código completa, consulte Como implementar um ToolStripRenderer personalizado.

// This class implements a custom ToolStripRenderer for the 
// GridStrip control. It customizes three aspects of the 
// GridStrip control's appearance: GridStrip border, 
// ToolStripButton border, and ToolStripButton image.
internal class GridStripRenderer : ToolStripRenderer
{   
    // The style of the empty cell's text.
    private static StringFormat style = new StringFormat();

    // The thickness (width or height) of a 
    // ToolStripButton control's border.
    static int borderThickness = 2;

    // The main bitmap that is the source for the 
    // subimagesthat are assigned to individual 
    // ToolStripButton controls.
    private Bitmap bmp = null;

    // The brush that paints the background of 
    // the GridStrip control.
    private Brush backgroundBrush = null;

    // This is the static constructor. It initializes the
    // StringFormat for drawing the text in the empty cell.
    static GridStripRenderer()
    {
        style.Alignment = StringAlignment.Center;
        style.LineAlignment = StringAlignment.Center;
    }

    // This method initializes the GridStripRenderer by
    // creating the image that is used as the source for
    // the individual button images.
    protected override void Initialize(ToolStrip ts)
    {
        base.Initialize(ts);

        this.InitializeBitmap(ts);
    }

    // This method initializes an individual ToolStripButton
    // control. It copies a subimage from the GridStripRenderer's
    // main image, according to the position and size of 
    // the ToolStripButton.
    protected override void InitializeItem(ToolStripItem item)
    {
        base.InitializeItem(item);

        GridStrip gs = item.Owner as GridStrip;

        // The empty cell does not receive a subimage.
        if ((item is ToolStripButton) &&
            (item != gs.EmptyCell))
        {
            // Copy the subimage from the appropriate 
            // part of the main image.
            Bitmap subImage = bmp.Clone(
                item.Bounds,
                PixelFormat.Undefined);

            // Assign the subimage to the ToolStripButton
            // control's Image property.
            item.Image = subImage;
        }
    }

    // This utility method creates the main image that
    // is the source for the subimages of the individual 
    // ToolStripButton controls.
    private void InitializeBitmap(ToolStrip toolStrip)
    {
        // Create the main bitmap, into which the image is drawn.
        this.bmp = new Bitmap(
            toolStrip.Size.Width,
            toolStrip.Size.Height);

        // Draw a fancy pattern. This could be any image or drawing.
        using (Graphics g = Graphics.FromImage(bmp))
        {
            // Draw smoothed lines.
            g.SmoothingMode = SmoothingMode.AntiAlias;
            
            // Draw the image. In this case, it is 
            // a number of concentric ellipses. 
            for (int i = 0; i < toolStrip.Size.Width; i += 8)
            {
                g.DrawEllipse(Pens.Blue, 0, 0, i, i);
            }
        }
    }

    // This method draws a border around the GridStrip control.
    protected override void OnRenderToolStripBorder(
        ToolStripRenderEventArgs e)
    {
        base.OnRenderToolStripBorder(e);

        ControlPaint.DrawFocusRectangle(
            e.Graphics,
            e.AffectedBounds,
            SystemColors.ControlDarkDark,
            SystemColors.ControlDarkDark);
    }

    // This method renders the GridStrip control's background.
    protected override void OnRenderToolStripBackground(
        ToolStripRenderEventArgs e)
    {
        base.OnRenderToolStripBackground(e);

        // This late initialization is a workaround. The gradient
        // depends on the bounds of the GridStrip control. The bounds 
        // are dependent on the layout engine, which hasn't fully
        // performed layout by the time the Initialize method runs.
        if (this.backgroundBrush == null)
        {
            this.backgroundBrush = new LinearGradientBrush(
               e.ToolStrip.ClientRectangle,
               SystemColors.ControlLightLight,
               SystemColors.ControlDark,
               90,
               true);
        }

        // Paint the GridStrip control's background.
        e.Graphics.FillRectangle(
            this.backgroundBrush, 
            e.AffectedBounds);
    }

    // This method draws a border around the button's image. If the background
    // to be rendered belongs to the empty cell, a string is drawn. Otherwise,
    // a border is drawn at the edges of the button.
    protected override void OnRenderButtonBackground(
        ToolStripItemRenderEventArgs e)
    {
        base.OnRenderButtonBackground(e);

        // Define some local variables for convenience.
        Graphics g = e.Graphics;
        GridStrip gs = e.ToolStrip as GridStrip;
        ToolStripButton gsb = e.Item as ToolStripButton;

        // Calculate the rectangle around which the border is painted.
        Rectangle imageRectangle = new Rectangle(
            borderThickness, 
            borderThickness, 
            e.Item.Width - 2 * borderThickness, 
            e.Item.Height - 2 * borderThickness);

        // If rendering the empty cell background, draw an 
        // explanatory string, centered in the ToolStripButton.
        if (gsb == gs.EmptyCell)
        {
            e.Graphics.DrawString(
                "Drag to here",
                gsb.Font, 
                SystemBrushes.ControlDarkDark,
                imageRectangle, style);
        }
        else
        {
            // If the button can be a drag source, paint its border red.
            // otherwise, paint its border a dark color.
            Brush b = gs.IsValidDragSource(gsb) ? b = 
                Brushes.Red : SystemBrushes.ControlDarkDark;

            // Draw the top segment of the border.
            Rectangle borderSegment = new Rectangle(
                0, 
                0, 
                e.Item.Width, 
                imageRectangle.Top);
            g.FillRectangle(b, borderSegment);

            // Draw the right segment.
            borderSegment = new Rectangle(
                imageRectangle.Right,
                0,
                e.Item.Bounds.Right - imageRectangle.Right,
                imageRectangle.Bottom);
            g.FillRectangle(b, borderSegment);

            // Draw the left segment.
            borderSegment = new Rectangle(
                0,
                0,
                imageRectangle.Left,
                e.Item.Height);
            g.FillRectangle(b, borderSegment);

            // Draw the bottom segment.
            borderSegment = new Rectangle(
                0,
                imageRectangle.Bottom,
                e.Item.Width,
                e.Item.Bounds.Bottom - imageRectangle.Bottom);
            g.FillRectangle(b, borderSegment);
        }
    }
}
' This class implements a custom ToolStripRenderer for the 
' GridStrip control. It customizes three aspects of the 
' GridStrip control's appearance: GridStrip border, 
' ToolStripButton border, and ToolStripButton image.
Friend Class GridStripRenderer
     Inherits ToolStripRenderer

   ' The style of the empty cell's text.
   Private Shared style As New StringFormat()
   
   ' The thickness (width or height) of a 
   ' ToolStripButton control's border.
   Private Shared borderThickness As Integer = 2
   
   ' The main bitmap that is the source for the 
   ' subimagesthat are assigned to individual 
   ' ToolStripButton controls.
   Private bmp As Bitmap = Nothing
   
   ' The brush that paints the background of 
   ' the GridStrip control.
   Private backgroundBrush As Brush = Nothing
   
   
   ' This is the static constructor. It initializes the
   ' StringFormat for drawing the text in the empty cell.
   Shared Sub New()
      style.Alignment = StringAlignment.Center
      style.LineAlignment = StringAlignment.Center
   End Sub 
   
   ' This method initializes the GridStripRenderer by
   ' creating the image that is used as the source for
   ' the individual button images.
   Protected Overrides Sub Initialize(ts As ToolStrip)
      MyBase.Initialize(ts)
      
      Me.InitializeBitmap(ts)
     End Sub

   ' This method initializes an individual ToolStripButton
   ' control. It copies a subimage from the GridStripRenderer's
   ' main image, according to the position and size of 
   ' the ToolStripButton.
   Protected Overrides Sub InitializeItem(item As ToolStripItem)
      MyBase.InitializeItem(item)
      
         Dim gs As GridStrip = item.Owner
      
      ' The empty cell does not receive a subimage.
         If ((TypeOf (item) Is ToolStripButton) And _
              (item IsNot gs.EmptyCell)) Then
             ' Copy the subimage from the appropriate 
             ' part of the main image.
             Dim subImage As Bitmap = bmp.Clone(item.Bounds, PixelFormat.Undefined)

             ' Assign the subimage to the ToolStripButton
             ' control's Image property.
             item.Image = subImage
         End If
   End Sub 

   ' This utility method creates the main image that
   ' is the source for the subimages of the individual 
   ' ToolStripButton controls.
   Private Sub InitializeBitmap(toolStrip As ToolStrip)
      ' Create the main bitmap, into which the image is drawn.
      Me.bmp = New Bitmap(toolStrip.Size.Width, toolStrip.Size.Height)
      
      ' Draw a fancy pattern. This could be any image or drawing.
      Dim g As Graphics = Graphics.FromImage(bmp)
      Try
         ' Draw smoothed lines.
         g.SmoothingMode = SmoothingMode.AntiAlias
         
         ' Draw the image. In this case, it is 
         ' a number of concentric ellipses. 
         Dim i As Integer
         For i = 0 To toolStrip.Size.Width - 8 Step 8
            g.DrawEllipse(Pens.Blue, 0, 0, i, i)
         Next i
      Finally
         g.Dispose()
      End Try
   End Sub 
   
   ' This method draws a border around the GridStrip control.
   Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs)
      MyBase.OnRenderToolStripBorder(e)
      
      ControlPaint.DrawFocusRectangle(e.Graphics, e.AffectedBounds, SystemColors.ControlDarkDark, SystemColors.ControlDarkDark)
   End Sub 

   ' This method renders the GridStrip control's background.
   Protected Overrides Sub OnRenderToolStripBackground(e As ToolStripRenderEventArgs)
      MyBase.OnRenderToolStripBackground(e)
      
      ' This late initialization is a workaround. The gradient
      ' depends on the bounds of the GridStrip control. The bounds 
      ' are dependent on the layout engine, which hasn't fully
      ' performed layout by the time the Initialize method runs.
      If Me.backgroundBrush Is Nothing Then
         Me.backgroundBrush = New LinearGradientBrush(e.ToolStrip.ClientRectangle, SystemColors.ControlLightLight, SystemColors.ControlDark, 90, True)
      End If
      
      ' Paint the GridStrip control's background.
      e.Graphics.FillRectangle(Me.backgroundBrush, e.AffectedBounds)
     End Sub

   ' This method draws a border around the button's image. If the background
   ' to be rendered belongs to the empty cell, a string is drawn. Otherwise,
   ' a border is drawn at the edges of the button.
   Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs)
      MyBase.OnRenderButtonBackground(e)
      
      ' Define some local variables for convenience.
      Dim g As Graphics = e.Graphics
      Dim gs As GridStrip = e.ToolStrip 
      Dim gsb As ToolStripButton = e.Item 
      
      ' Calculate the rectangle around which the border is painted.
      Dim imageRectangle As New Rectangle(borderThickness, borderThickness, e.Item.Width - 2 * borderThickness, e.Item.Height - 2 * borderThickness)
      
      ' If rendering the empty cell background, draw an 
      ' explanatory string, centered in the ToolStripButton.
         If gsb Is gs.EmptyCell Then
             e.Graphics.DrawString("Drag to here", gsb.Font, SystemBrushes.ControlDarkDark, imageRectangle, style)
         Else
             ' If the button can be a drag source, paint its border red.
             ' otherwise, paint its border a dark color.
             Dim b As Brush = IIf(gs.IsValidDragSource(gsb), Brushes.Red, SystemBrushes.ControlDarkDark)

             ' Draw the top segment of the border.
             Dim borderSegment As New Rectangle(0, 0, e.Item.Width, imageRectangle.Top)
             g.FillRectangle(b, borderSegment)

             ' Draw the right segment.
             borderSegment = New Rectangle(imageRectangle.Right, 0, e.Item.Bounds.Right - imageRectangle.Right, imageRectangle.Bottom)
             g.FillRectangle(b, borderSegment)

             ' Draw the left segment.
             borderSegment = New Rectangle(0, 0, imageRectangle.Left, e.Item.Height)
             g.FillRectangle(b, borderSegment)

             ' Draw the bottom segment.
             borderSegment = New Rectangle(0, imageRectangle.Bottom, e.Item.Width, e.Item.Bounds.Bottom - imageRectangle.Bottom)
             g.FillRectangle(b, borderSegment)
         End If
     End Sub
 End Class

Comentários

Use a ToolStripRenderer classe para aplicar um estilo ou tema específico a um ToolStrip. Em vez de pintar um ToolStrip e os ToolStripItem objetos que ele contém, defina a ToolStrip.Renderer propriedade como um objeto que herda de ToolStripRenderer. A pintura especificada pelo ToolStripRenderer é aplicada ao ToolStrip, bem como aos itens que ela contém.

Você pode fazer pintura personalizada em ToolStrip controles de várias maneiras. Assim como acontece com outros controles Windows Forms, e ToolStripToolStripItem ambos têm métodos e Paint eventos substituíveisOnPaint. Assim como ocorre com pintura regular, o sistema de coordenadas é relativo à área de cliente do controle, ou seja, o canto superior esquerdo do controle é 0, 0. O Paint evento e OnPaint o método para um ToolStripItem se comportam como outros eventos de pintura de controle.

A ToolStripRenderer classe tem métodos substituíveis para pintar a tela de fundo, o plano de fundo do item, a imagem do item, a seta do item, o texto do item e a borda do ToolStrip. Os argumentos de evento para esses métodos expõem várias propriedades como retângulos, cores e formatos de texto que você pode ajustar conforme desejado.

Para ajustar apenas alguns aspectos de como um item é pintado, você normalmente substitui o ToolStripRenderer.

Se você estiver escrevendo um novo item e desejar controlar todos os aspectos de pintura, substitua o método OnPaint. De dentro OnPaintdo , você pode usar métodos do ToolStripRenderer.

Por padrão, o ToolStrip é armazenado em buffer duplo, aproveitando a OptimizedDoubleBuffer configuração.

Construtores

ToolStripRenderer()

Inicializa uma nova instância da classe ToolStripRenderer.

Campos

Offset2X

Obtém ou define o multiplicador de deslocamento para o dobro do deslocamento ao longo do eixo x.

Offset2Y

Obtém ou define o multiplicador de deslocamento para o dobro do deslocamento ao longo do eixo y.

Métodos

CreateDisabledImage(Image)

Cria uma cópia em escala de cinza de determinada imagem.

DrawArrow(ToolStripArrowRenderEventArgs)

Desenha uma seta em uma ToolStripItem.

DrawButtonBackground(ToolStripItemRenderEventArgs)

Desenha a tela de fundo de um ToolStripButton.

DrawDropDownButtonBackground(ToolStripItemRenderEventArgs)

Desenha a tela de fundo de um ToolStripDropDownButton.

DrawGrip(ToolStripGripRenderEventArgs)

Desenha uma alça de movimentação em um ToolStrip.

DrawImageMargin(ToolStripRenderEventArgs)

Desenha o espaço em torno de uma imagem em um ToolStrip.

DrawItemBackground(ToolStripItemRenderEventArgs)

Desenha a tela de fundo de um ToolStripItem.

DrawItemCheck(ToolStripItemImageRenderEventArgs)

Desenha uma imagem em um ToolStripItem que indica que o item está em um estado selecionado.

DrawItemImage(ToolStripItemImageRenderEventArgs)

Desenha uma imagem em um ToolStripItem.

DrawItemText(ToolStripItemTextRenderEventArgs)

Desenha texto em um ToolStripItem.

DrawLabelBackground(ToolStripItemRenderEventArgs)

Desenha a tela de fundo de um ToolStripLabel.

DrawMenuItemBackground(ToolStripItemRenderEventArgs)

Desenha a tela de fundo de um ToolStripMenuItem.

DrawOverflowButtonBackground(ToolStripItemRenderEventArgs)

Desenha a tela de fundo de um botão de estouro.

DrawSeparator(ToolStripSeparatorRenderEventArgs)

Desenha um ToolStripSeparator.

DrawSplitButton(ToolStripItemRenderEventArgs)

Desenha um ToolStripSplitButton.

DrawStatusStripSizingGrip(ToolStripRenderEventArgs)

Desenha uma alça de dimensionamento.

DrawToolStripBackground(ToolStripRenderEventArgs)

Desenha a tela de fundo de um ToolStrip.

DrawToolStripBorder(ToolStripRenderEventArgs)

Desenha a borda de um ToolStrip.

DrawToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs)

Desenha a tela de fundo do ToolStripContentPanel.

DrawToolStripPanelBackground(ToolStripPanelRenderEventArgs)

Desenha a tela de fundo do ToolStripPanel.

DrawToolStripStatusLabelBackground(ToolStripItemRenderEventArgs)

Desenha a tela de fundo do ToolStripStatusLabel.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Initialize(ToolStrip)

Quando substituído em uma classe derivada, fornece inicialização personalizada do ToolStrip fornecido.

InitializeContentPanel(ToolStripContentPanel)

Inicializa o ToolStripContentPanel especificado.

InitializeItem(ToolStripItem)

Quando substituído em uma classe derivada, fornece inicialização personalizada do ToolStripItem fornecido.

InitializePanel(ToolStripPanel)

Inicializa o ToolStripPanel especificado.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnRenderArrow(ToolStripArrowRenderEventArgs)

Aciona o evento RenderArrow.

OnRenderButtonBackground(ToolStripItemRenderEventArgs)

Aciona o evento RenderButtonBackground.

OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs)

Aciona o evento RenderDropDownButtonBackground.

OnRenderGrip(ToolStripGripRenderEventArgs)

Aciona o evento RenderGrip.

OnRenderImageMargin(ToolStripRenderEventArgs)

Desenha a tela de fundo do item.

OnRenderItemBackground(ToolStripItemRenderEventArgs)

Aciona o evento OnRenderItemBackground(ToolStripItemRenderEventArgs).

OnRenderItemCheck(ToolStripItemImageRenderEventArgs)

Aciona o evento RenderItemCheck.

OnRenderItemImage(ToolStripItemImageRenderEventArgs)

Aciona o evento RenderItemImage.

OnRenderItemText(ToolStripItemTextRenderEventArgs)

Aciona o evento RenderItemText.

OnRenderLabelBackground(ToolStripItemRenderEventArgs)

Aciona o evento RenderLabelBackground.

OnRenderMenuItemBackground(ToolStripItemRenderEventArgs)

Aciona o evento RenderMenuItemBackground.

OnRenderOverflowButtonBackground(ToolStripItemRenderEventArgs)

Aciona o evento RenderOverflowButtonBackground.

OnRenderSeparator(ToolStripSeparatorRenderEventArgs)

Aciona o evento RenderSeparator.

OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs)

Aciona o evento OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs).

OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs)

Aciona o evento RenderStatusStripSizingGrip.

OnRenderToolStripBackground(ToolStripRenderEventArgs)

Aciona o evento RenderToolStripBackground.

OnRenderToolStripBorder(ToolStripRenderEventArgs)

Aciona o evento RenderToolStripBorder.

OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs)

Aciona o evento RenderToolStripContentPanelBackground.

OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs)

Aciona o evento RenderToolStripPanelBackground.

OnRenderToolStripStatusLabelBackground(ToolStripItemRenderEventArgs)

Aciona o evento RenderToolStripStatusLabelBackground.

ScaleArrowOffsetsIfNeeded()

Aplicará os valores Offset2X e Offset2Y à colocação em escala do ícone de seta, se a colocação em escala for necessária com base nas configurações de DPI do computador.

ScaleArrowOffsetsIfNeeded(Int32)

Aplicará os valores Offset2X e Offset2Y à colocação em escala do ícone de seta com base no valor de DPI especificado.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Eventos

RenderArrow

Ocorre quando uma seta em um ToolStripItem é renderizada.

RenderButtonBackground

Ocorre quando a tela de fundo de um ToolStripButton é renderizado.

RenderDropDownButtonBackground

Ocorre quando a tela de fundo de um ToolStripDropDownButton é renderizado.

RenderGrip

Ocorre quando a alça de movimentação de um ToolStrip é renderizada.

RenderImageMargin

Desenha a margem entre uma imagem e seu contêiner.

RenderItemBackground

Ocorre quando a tela de fundo de um ToolStripItem é renderizado.

RenderItemCheck

Ocorre quando a imagem de um ToolStripItem selecionado é renderizada.

RenderItemImage

Ocorre quando a imagem de um ToolStripItem é renderizada.

RenderItemText

Ocorre quando o texto de um ToolStripItem é renderizado.

RenderLabelBackground

Ocorre quando a tela de fundo de um ToolStripLabel é renderizado.

RenderMenuItemBackground

Ocorre quando a tela de fundo de um ToolStripMenuItem é renderizado.

RenderOverflowButtonBackground

Ocorre quando a tela de fundo de um botão de estouro é renderizado.

RenderSeparator

Ocorre quando um ToolStripSeparator é renderizado.

RenderSplitButtonBackground

Ocorre quando a tela de fundo de um ToolStripSplitButton é renderizado.

RenderStatusStripSizingGrip

Ocorre quando o estilo de exibição é alterado.

RenderToolStripBackground

Ocorre quando a tela de fundo de um ToolStrip é renderizado.

RenderToolStripBorder

Ocorre quando a borda de um ToolStrip é renderizada.

RenderToolStripContentPanelBackground

Desenha a tela de fundo de um ToolStripContentPanel.

RenderToolStripPanelBackground

Desenha a tela de fundo de um ToolStripPanel.

RenderToolStripStatusLabelBackground

Desenha a tela de fundo de um ToolStripStatusLabel.

Aplica-se a

Confira também