ToolStripProfessionalRenderer Class

Definition

Handles the painting functionality for ToolStrip objects, applying a custom palette and a streamlined style.

public ref class ToolStripProfessionalRenderer : System::Windows::Forms::ToolStripRenderer
public class ToolStripProfessionalRenderer : System.Windows.Forms.ToolStripRenderer
type ToolStripProfessionalRenderer = class
    inherit ToolStripRenderer
Public Class ToolStripProfessionalRenderer
Inherits ToolStripRenderer
Inheritance
ToolStripProfessionalRenderer

Examples

The following code example demonstrates how to create a composite control that mimics the Navigation Pane provided by Microsoft® Outlook®. For a full code listing, see How to: Create a Professionally Styled ToolStrip Control.

internal class StackRenderer : ToolStripProfessionalRenderer
{
    private static Bitmap titleBarGripBmp;
    private static string titleBarGripEnc = @"Qk16AQAAAAAAADYAAAAoAAAAIwAAAAMAAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5ANj+RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5ANj+RzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMANj+";

    // Define titlebar colors.
    private static Color titlebarColor1 = Color.FromArgb(89, 135, 214);
    private static Color titlebarColor2 = Color.FromArgb(76, 123, 204);
    private static Color titlebarColor3 = Color.FromArgb(63, 111, 194);
    private static Color titlebarColor4 = Color.FromArgb(50, 99, 184);
    private static Color titlebarColor5 = Color.FromArgb(38, 88, 174);
    private static Color titlebarColor6 = Color.FromArgb(25, 76, 164);
    private static Color titlebarColor7 = Color.FromArgb(12, 64, 154);
    private static Color borderColor = Color.FromArgb(0, 0, 128);

    static StackRenderer()
    {
        titleBarGripBmp = StackView.DeserializeFromBase64(titleBarGripEnc);
    }

    public StackRenderer()
    {
    }

    private void DrawTitleBar(Graphics g, Rectangle rect)
    {
        // Assign the image for the grip.
        Image titlebarGrip = titleBarGripBmp;

        // Fill the titlebar. 
        // This produces the gradient and the rounded-corner effect.
        g.DrawLine(new Pen(titlebarColor1), rect.X, rect.Y, rect.X + rect.Width, rect.Y);
        g.DrawLine(new Pen(titlebarColor2), rect.X, rect.Y + 1, rect.X + rect.Width, rect.Y + 1);
        g.DrawLine(new Pen(titlebarColor3), rect.X, rect.Y + 2, rect.X + rect.Width, rect.Y + 2);
        g.DrawLine(new Pen(titlebarColor4), rect.X, rect.Y + 3, rect.X + rect.Width, rect.Y + 3);
        g.DrawLine(new Pen(titlebarColor5), rect.X, rect.Y + 4, rect.X + rect.Width, rect.Y + 4);
        g.DrawLine(new Pen(titlebarColor6), rect.X, rect.Y + 5, rect.X + rect.Width, rect.Y + 5);
        g.DrawLine(new Pen(titlebarColor7), rect.X, rect.Y + 6, rect.X + rect.Width, rect.Y + 6);

        // Center the titlebar grip.
        g.DrawImage(
            titlebarGrip,
            new Point(rect.X + ((rect.Width / 2) - (titlebarGrip.Width / 2)),
            rect.Y + 1));
    }

    // This method handles the RenderGrip event.
    protected override void OnRenderGrip(ToolStripGripRenderEventArgs e)
    {
        DrawTitleBar(
            e.Graphics,
            new Rectangle(0, 0, e.ToolStrip.Width, 7));
    }

    // This method handles the RenderToolStripBorder event.
    protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
    {
        DrawTitleBar(
            e.Graphics,
            new Rectangle(0, 0, e.ToolStrip.Width, 7));
    }

    // This method handles the RenderButtonBackground event.
    protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
    {
        Graphics g = e.Graphics;
        Rectangle bounds = new Rectangle(Point.Empty, e.Item.Size);

        Color gradientBegin = Color.FromArgb(203, 225, 252);
        Color gradientEnd = Color.FromArgb(125, 165, 224);

        ToolStripButton button = e.Item as ToolStripButton;
        if (button.Pressed || button.Checked)
        {
            gradientBegin = Color.FromArgb(254, 128, 62);
            gradientEnd = Color.FromArgb(255, 223, 154);
        }
        else if (button.Selected)
        {
            gradientBegin = Color.FromArgb(255, 255, 222);
            gradientEnd = Color.FromArgb(255, 203, 136);
        }

        using (Brush b = new LinearGradientBrush(
            bounds,
            gradientBegin,
            gradientEnd,
            LinearGradientMode.Vertical))
        {
            g.FillRectangle(b, bounds);
        }

        e.Graphics.DrawRectangle(
            SystemPens.ControlDarkDark,
            bounds);

        g.DrawLine(
            SystemPens.ControlDarkDark,
            bounds.X,
            bounds.Y,
            bounds.Width - 1,
            bounds.Y);

        g.DrawLine(
            SystemPens.ControlDarkDark,
            bounds.X,
            bounds.Y,
            bounds.X,
            bounds.Height - 1);

        ToolStrip toolStrip = button.Owner;
        ToolStripButton nextItem = button.Owner.GetItemAt(
            button.Bounds.X,
            button.Bounds.Bottom + 1) as ToolStripButton;

        if (nextItem == null)
        {
            g.DrawLine(
                SystemPens.ControlDarkDark,
                bounds.X,
                bounds.Height - 1,
                bounds.X + bounds.Width - 1,
                bounds.Height - 1);
        }
    }
}
Friend Class StackRenderer
   Inherits ToolStripProfessionalRenderer
   Private Shared titleBarGripBmp As Bitmap
   Private Shared titleBarGripEnc As String = "Qk16AQAAAAAAADYAAAAoAAAAIwAAAAMAAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5uGMyuGMy+/n5+/n5ANj+RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5wm8/RzIomHRh+/n5ANj+RzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMzHtMRzIoRzIozHtMANj+"
   
   ' Define titlebar colors.
   Private Shared titlebarColor1 As Color = Color.FromArgb(89, 135, 214)
   Private Shared titlebarColor2 As Color = Color.FromArgb(76, 123, 204)
   Private Shared titlebarColor3 As Color = Color.FromArgb(63, 111, 194)
   Private Shared titlebarColor4 As Color = Color.FromArgb(50, 99, 184)
   Private Shared titlebarColor5 As Color = Color.FromArgb(38, 88, 174)
   Private Shared titlebarColor6 As Color = Color.FromArgb(25, 76, 164)
   Private Shared titlebarColor7 As Color = Color.FromArgb(12, 64, 154)
   Private Shared borderColor As Color = Color.FromArgb(0, 0, 128)
   
   Shared Sub New()
      titleBarGripBmp = StackView.DeserializeFromBase64(titleBarGripEnc)
     End Sub
   
   Public Sub New()
     End Sub
   
     Private Sub DrawTitleBar(ByVal g As Graphics, ByVal rect As Rectangle)

         ' Assign the image for the grip.
         Dim titlebarGrip As Image = titleBarGripBmp

         ' Fill the titlebar. 
         ' This produces the gradient and the rounded-corner effect.
         g.DrawLine(New Pen(titlebarColor1), rect.X, rect.Y, rect.X + rect.Width, rect.Y)
         g.DrawLine(New Pen(titlebarColor2), rect.X, rect.Y + 1, rect.X + rect.Width, rect.Y + 1)
         g.DrawLine(New Pen(titlebarColor3), rect.X, rect.Y + 2, rect.X + rect.Width, rect.Y + 2)
         g.DrawLine(New Pen(titlebarColor4), rect.X, rect.Y + 3, rect.X + rect.Width, rect.Y + 3)
         g.DrawLine(New Pen(titlebarColor5), rect.X, rect.Y + 4, rect.X + rect.Width, rect.Y + 4)
         g.DrawLine(New Pen(titlebarColor6), rect.X, rect.Y + 5, rect.X + rect.Width, rect.Y + 5)
         g.DrawLine(New Pen(titlebarColor7), rect.X, rect.Y + 6, rect.X + rect.Width, rect.Y + 6)

         ' Center the titlebar grip.
         g.DrawImage(titlebarGrip, New Point(rect.X + (rect.Width / 2 - titlebarGrip.Width / 2), rect.Y + 1))
     End Sub
   
   
   ' This method handles the RenderGrip event.
   Protected Overrides Sub OnRenderGrip(e As ToolStripGripRenderEventArgs)
      DrawTitleBar(e.Graphics, New Rectangle(0, 0, e.ToolStrip.Width, 7))
     End Sub
   
   
   ' This method handles the RenderToolStripBorder event.
   Protected Overrides Sub OnRenderToolStripBorder(e As ToolStripRenderEventArgs)
      DrawTitleBar(e.Graphics, New Rectangle(0, 0, e.ToolStrip.Width, 7))
     End Sub
   
   
   ' This method handles the RenderButtonBackground event.
   Protected Overrides Sub OnRenderButtonBackground(e As ToolStripItemRenderEventArgs)
      Dim g As Graphics = e.Graphics
      Dim bounds As New Rectangle(Point.Empty, e.Item.Size)
      
      Dim gradientBegin As Color = Color.FromArgb(203, 225, 252)
      Dim gradientEnd As Color = Color.FromArgb(125, 165, 224)
      
         Dim button As ToolStripButton = CType(e.Item, ToolStripButton)
      
      If button.Pressed OrElse button.Checked Then
         gradientBegin = Color.FromArgb(254, 128, 62)
         gradientEnd = Color.FromArgb(255, 223, 154)
      ElseIf button.Selected Then
         gradientBegin = Color.FromArgb(255, 255, 222)
         gradientEnd = Color.FromArgb(255, 203, 136)
      End If
      
      Dim b = New LinearGradientBrush(bounds, gradientBegin, gradientEnd, LinearGradientMode.Vertical)
      Try
         g.FillRectangle(b, bounds)
      Finally
         b.Dispose()
      End Try
      
      e.Graphics.DrawRectangle(SystemPens.ControlDarkDark, bounds)
      
      g.DrawLine(SystemPens.ControlDarkDark, bounds.X, bounds.Y, bounds.Width - 1, bounds.Y)
      
      g.DrawLine(SystemPens.ControlDarkDark, bounds.X, bounds.Y, bounds.X, bounds.Height - 1)
      
      Dim toolStrip As ToolStrip = button.Owner
         Dim nextItem As ToolStripButton = CType(button.Owner.GetItemAt(button.Bounds.X, button.Bounds.Bottom + 1), ToolStripButton)
      
      If nextItem Is Nothing Then
         g.DrawLine(SystemPens.ControlDarkDark, bounds.X, bounds.Height - 1, bounds.X + bounds.Width - 1, bounds.Height - 1)
      End If
     End Sub
 End Class

Remarks

ToolStripProfessionalRenderer creates pens and brushes based on a replaceable color table called ProfessionalColorTable.

Constructors

ToolStripProfessionalRenderer()

Initializes a new instance of the ToolStripProfessionalRenderer class.

ToolStripProfessionalRenderer(ProfessionalColorTable)

Initializes a new instance of the ToolStripProfessionalRenderer class.

Properties

ColorTable

Gets the color palette used for painting.

RoundedEdges

Gets or sets a value indicating whether edges of controls have a rounded rather than a square or sharp appearance.

Methods

DrawArrow(ToolStripArrowRenderEventArgs)

Draws an arrow on a ToolStripItem.

(Inherited from ToolStripRenderer)
DrawButtonBackground(ToolStripItemRenderEventArgs)

Draws the background for a ToolStripButton.

(Inherited from ToolStripRenderer)
DrawDropDownButtonBackground(ToolStripItemRenderEventArgs)

Draws the background for a ToolStripDropDownButton.

(Inherited from ToolStripRenderer)
DrawGrip(ToolStripGripRenderEventArgs)

Draws a move handle on a ToolStrip.

(Inherited from ToolStripRenderer)
DrawImageMargin(ToolStripRenderEventArgs)

Draws the space around an image on a ToolStrip.

(Inherited from ToolStripRenderer)
DrawItemBackground(ToolStripItemRenderEventArgs)

Draws the background for a ToolStripItem.

(Inherited from ToolStripRenderer)
DrawItemCheck(ToolStripItemImageRenderEventArgs)

Draws an image on a ToolStripItem that indicates the item is in a selected state.

(Inherited from ToolStripRenderer)
DrawItemImage(ToolStripItemImageRenderEventArgs)

Draws an image on a ToolStripItem.

(Inherited from ToolStripRenderer)
DrawItemText(ToolStripItemTextRenderEventArgs)

Draws text on a ToolStripItem.

(Inherited from ToolStripRenderer)
DrawLabelBackground(ToolStripItemRenderEventArgs)

Draws the background for a ToolStripLabel.

(Inherited from ToolStripRenderer)
DrawMenuItemBackground(ToolStripItemRenderEventArgs)

Draws the background for a ToolStripMenuItem.

(Inherited from ToolStripRenderer)
DrawOverflowButtonBackground(ToolStripItemRenderEventArgs)

Draws the background for an overflow button.

(Inherited from ToolStripRenderer)
DrawSeparator(ToolStripSeparatorRenderEventArgs)

Draws a ToolStripSeparator.

(Inherited from ToolStripRenderer)
DrawSplitButton(ToolStripItemRenderEventArgs)

Draws a ToolStripSplitButton.

(Inherited from ToolStripRenderer)
DrawStatusStripSizingGrip(ToolStripRenderEventArgs)

Draws a sizing grip.

(Inherited from ToolStripRenderer)
DrawToolStripBackground(ToolStripRenderEventArgs)

Draws the background for a ToolStrip.

(Inherited from ToolStripRenderer)
DrawToolStripBorder(ToolStripRenderEventArgs)

Draws the border for a ToolStrip.

(Inherited from ToolStripRenderer)
DrawToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs)

Draws the background of the ToolStripContentPanel.

(Inherited from ToolStripRenderer)
DrawToolStripPanelBackground(ToolStripPanelRenderEventArgs)

Draws the background of the ToolStripPanel.

(Inherited from ToolStripRenderer)
DrawToolStripStatusLabelBackground(ToolStripItemRenderEventArgs)

Draws the background of the ToolStripStatusLabel.

(Inherited from ToolStripRenderer)
Equals(Object)

Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

Serves as the default hash function.

(Inherited from Object)
GetType()

Gets the Type of the current instance.

(Inherited from Object)
Initialize(ToolStrip)

When overridden in a derived class, provides for custom initialization of the given ToolStrip.

(Inherited from ToolStripRenderer)
InitializeContentPanel(ToolStripContentPanel)

Initializes the specified ToolStripContentPanel.

(Inherited from ToolStripRenderer)
InitializeItem(ToolStripItem)

When overridden in a derived class, provides for custom initialization of the given ToolStripItem.

(Inherited from ToolStripRenderer)
InitializePanel(ToolStripPanel)

Initializes the specified ToolStripPanel.

(Inherited from ToolStripRenderer)
MemberwiseClone()

Creates a shallow copy of the current Object.

(Inherited from Object)
OnRenderArrow(ToolStripArrowRenderEventArgs)

Raises the RenderArrow event.

OnRenderButtonBackground(ToolStripItemRenderEventArgs)

Raises the RenderButtonBackground event.

OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs)

Raises the RenderDropDownButtonBackground event.

OnRenderGrip(ToolStripGripRenderEventArgs)

Raises the RenderGrip event.

OnRenderImageMargin(ToolStripRenderEventArgs)

Draws the item background.

OnRenderItemBackground(ToolStripItemRenderEventArgs)

Raises the OnRenderItemBackground(ToolStripItemRenderEventArgs) event.

(Inherited from ToolStripRenderer)
OnRenderItemCheck(ToolStripItemImageRenderEventArgs)

Raises the RenderItemCheck event.

OnRenderItemImage(ToolStripItemImageRenderEventArgs)

Raises the RenderItemImage event.

OnRenderItemText(ToolStripItemTextRenderEventArgs)

Raises the RenderItemText event.

OnRenderLabelBackground(ToolStripItemRenderEventArgs)

Raises the RenderLabelBackground event.

OnRenderMenuItemBackground(ToolStripItemRenderEventArgs)

Raises the RenderMenuItemBackground event.

OnRenderOverflowButtonBackground(ToolStripItemRenderEventArgs)

Raises the RenderOverflowButtonBackground event.

OnRenderSeparator(ToolStripSeparatorRenderEventArgs)

Raises the RenderSeparator event.

OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs)

Raises the OnRenderSplitButtonBackground event.

OnRenderStatusStripSizingGrip(ToolStripRenderEventArgs)

Raises the RenderStatusStripSizingGrip event.

(Inherited from ToolStripRenderer)
OnRenderToolStripBackground(ToolStripRenderEventArgs)

Raises the RenderToolStripBackground event.

OnRenderToolStripBorder(ToolStripRenderEventArgs)

Raises the RenderToolStripBorder event.

OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs)

Raises the RenderToolStripContentPanelBackground event.

OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs)

Raises the RenderToolStripPanelBackground event.

OnRenderToolStripStatusLabelBackground(ToolStripItemRenderEventArgs)

Raises the RenderToolStripStatusLabelBackground event.

ToString()

Returns a string that represents the current object.

(Inherited from Object)

Events

RenderArrow

Occurs when an arrow on a ToolStripItem is rendered.

(Inherited from ToolStripRenderer)
RenderButtonBackground

Occurs when the background for a ToolStripButton is rendered.

(Inherited from ToolStripRenderer)
RenderDropDownButtonBackground

Occurs when the background for a ToolStripDropDownButton is rendered.

(Inherited from ToolStripRenderer)
RenderGrip

Occurs when the move handle for a ToolStrip is rendered.

(Inherited from ToolStripRenderer)
RenderImageMargin

Draws the margin between an image and its container.

(Inherited from ToolStripRenderer)
RenderItemBackground

Occurs when the background for a ToolStripItem is rendered.

(Inherited from ToolStripRenderer)
RenderItemCheck

Occurs when the image for a selected ToolStripItem is rendered.

(Inherited from ToolStripRenderer)
RenderItemImage

Occurs when the image for a ToolStripItem is rendered.

(Inherited from ToolStripRenderer)
RenderItemText

Occurs when the text for a ToolStripItem is rendered.

(Inherited from ToolStripRenderer)
RenderLabelBackground

Occurs when the background for a ToolStripLabel is rendered.

(Inherited from ToolStripRenderer)
RenderMenuItemBackground

Occurs when the background for a ToolStripMenuItem is rendered.

(Inherited from ToolStripRenderer)
RenderOverflowButtonBackground

Occurs when the background for an overflow button is rendered.

(Inherited from ToolStripRenderer)
RenderSeparator

Occurs when a ToolStripSeparator is rendered.

(Inherited from ToolStripRenderer)
RenderSplitButtonBackground

Occurs when the background for a ToolStripSplitButton is rendered.

(Inherited from ToolStripRenderer)
RenderStatusStripSizingGrip

Occurs when the display style changes.

(Inherited from ToolStripRenderer)
RenderToolStripBackground

Occurs when the background for a ToolStrip is rendered.

(Inherited from ToolStripRenderer)
RenderToolStripBorder

Occurs when the border for a ToolStrip is rendered.

(Inherited from ToolStripRenderer)
RenderToolStripContentPanelBackground

Draws the background of a ToolStripContentPanel.

(Inherited from ToolStripRenderer)
RenderToolStripPanelBackground

Draws the background of a ToolStripPanel.

(Inherited from ToolStripRenderer)
RenderToolStripStatusLabelBackground

Draws the background of a ToolStripStatusLabel.

(Inherited from ToolStripRenderer)

Applies to