This topic has not yet been rated - Rate this topic

ToolStripProfessionalRenderer Class

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

System.Object
  System.Windows.Forms.ToolStripRenderer
    System.Windows.Forms.ToolStripProfessionalRenderer

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
public class ToolStripProfessionalRenderer : ToolStripRenderer

The ToolStripProfessionalRenderer type exposes the following members.

  Name Description
Public method ToolStripProfessionalRenderer() Initializes a new instance of the ToolStripProfessionalRenderer class.
Public method ToolStripProfessionalRenderer(ProfessionalColorTable) Initializes a new instance of the ToolStripProfessionalRenderer class.
Top
  Name Description
Public property ColorTable Gets the color palette used for painting.
Public property RoundedEdges Gets or sets a value indicating whether edges of controls have a rounded rather than a square or sharp appearance.
Top
  Name Description
Public method DrawArrow Draws an arrow on a ToolStripItem. (Inherited from ToolStripRenderer.)
Public method DrawButtonBackground Draws the background for a ToolStripButton. (Inherited from ToolStripRenderer.)
Public method DrawDropDownButtonBackground Draws the background for a ToolStripDropDownButton. (Inherited from ToolStripRenderer.)
Public method DrawGrip Draws a move handle on a ToolStrip. (Inherited from ToolStripRenderer.)
Public method DrawImageMargin Draws the space around an image on a ToolStrip. (Inherited from ToolStripRenderer.)
Public method DrawItemBackground Draws the background for a ToolStripItem. (Inherited from ToolStripRenderer.)
Public method DrawItemCheck Draws an image on a ToolStripItem that indicates the item is in a selected state. (Inherited from ToolStripRenderer.)
Public method DrawItemImage Draws an image on a ToolStripItem. (Inherited from ToolStripRenderer.)
Public method DrawItemText Draws text on a ToolStripItem. (Inherited from ToolStripRenderer.)
Public method DrawLabelBackground Draws the background for a ToolStripLabel. (Inherited from ToolStripRenderer.)
Public method DrawMenuItemBackground Draws the background for a ToolStripMenuItem. (Inherited from ToolStripRenderer.)
Public method DrawOverflowButtonBackground Draws the background for an overflow button. (Inherited from ToolStripRenderer.)
Public method DrawSeparator Draws a ToolStripSeparator. (Inherited from ToolStripRenderer.)
Public method DrawSplitButton Draws a ToolStripSplitButton. (Inherited from ToolStripRenderer.)
Public method DrawStatusStripSizingGrip Draws a sizing grip. (Inherited from ToolStripRenderer.)
Public method DrawToolStripBackground Draws the background for a ToolStrip. (Inherited from ToolStripRenderer.)
Public method DrawToolStripBorder Draws the border for a ToolStrip. (Inherited from ToolStripRenderer.)
Public method DrawToolStripContentPanelBackground Draws the background of the ToolStripContentPanel. (Inherited from ToolStripRenderer.)
Public method DrawToolStripPanelBackground Draws the background of the ToolStripPanel. (Inherited from ToolStripRenderer.)
Public method DrawToolStripStatusLabelBackground Draws the background of the ToolStripStatusLabel. (Inherited from ToolStripRenderer.)
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method Initialize When overridden in a derived class, provides for custom initialization of the given ToolStrip. (Inherited from ToolStripRenderer.)
Protected method InitializeContentPanel Initializes the specified ToolStripContentPanel. (Inherited from ToolStripRenderer.)
Protected method InitializeItem When overridden in a derived class, provides for custom initialization of the given ToolStripItem. (Inherited from ToolStripRenderer.)
Protected method InitializePanel Initializes the specified ToolStripPanel. (Inherited from ToolStripRenderer.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Protected method OnRenderArrow Raises the RenderArrow event. (Overrides ToolStripRenderer.OnRenderArrow(ToolStripArrowRenderEventArgs).)
Protected method OnRenderButtonBackground Raises the RenderButtonBackground event. (Overrides ToolStripRenderer.OnRenderButtonBackground(ToolStripItemRenderEventArgs).)
Protected method OnRenderDropDownButtonBackground Raises the RenderDropDownButtonBackground event. (Overrides ToolStripRenderer.OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs).)
Protected method OnRenderGrip Raises the RenderGrip event. (Overrides ToolStripRenderer.OnRenderGrip(ToolStripGripRenderEventArgs).)
Protected method OnRenderImageMargin Draws the item background. (Overrides ToolStripRenderer.OnRenderImageMargin(ToolStripRenderEventArgs).)
Protected method OnRenderItemBackground Raises the OnRenderItemBackground event. (Inherited from ToolStripRenderer.)
Protected method OnRenderItemCheck Raises the RenderItemCheck event. (Overrides ToolStripRenderer.OnRenderItemCheck(ToolStripItemImageRenderEventArgs).)
Protected method OnRenderItemImage Raises the RenderItemImage event. (Overrides ToolStripRenderer.OnRenderItemImage(ToolStripItemImageRenderEventArgs).)
Protected method OnRenderItemText Raises the RenderItemText event. (Overrides ToolStripRenderer.OnRenderItemText(ToolStripItemTextRenderEventArgs).)
Protected method OnRenderLabelBackground Raises the RenderLabelBackground event. (Overrides ToolStripRenderer.OnRenderLabelBackground(ToolStripItemRenderEventArgs).)
Protected method OnRenderMenuItemBackground Raises the RenderMenuItemBackground event. (Overrides ToolStripRenderer.OnRenderMenuItemBackground(ToolStripItemRenderEventArgs).)
Protected method OnRenderOverflowButtonBackground Raises the RenderOverflowButtonBackground event. (Overrides ToolStripRenderer.OnRenderOverflowButtonBackground(ToolStripItemRenderEventArgs).)
Protected method OnRenderSeparator Raises the RenderSeparator event. (Overrides ToolStripRenderer.OnRenderSeparator(ToolStripSeparatorRenderEventArgs).)
Protected method OnRenderSplitButtonBackground Raises the OnRenderSplitButtonBackground event. (Overrides ToolStripRenderer.OnRenderSplitButtonBackground(ToolStripItemRenderEventArgs).)
Protected method OnRenderStatusStripSizingGrip Raises the RenderStatusStripSizingGrip event. (Inherited from ToolStripRenderer.)
Protected method OnRenderToolStripBackground Raises the RenderToolStripBackground event. (Overrides ToolStripRenderer.OnRenderToolStripBackground(ToolStripRenderEventArgs).)
Protected method OnRenderToolStripBorder Raises the RenderToolStripBorder event. (Overrides ToolStripRenderer.OnRenderToolStripBorder(ToolStripRenderEventArgs).)
Protected method OnRenderToolStripContentPanelBackground Raises the RenderToolStripContentPanelBackground event. (Overrides ToolStripRenderer.OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs).)
Protected method OnRenderToolStripPanelBackground Raises the RenderToolStripPanelBackground event. (Overrides ToolStripRenderer.OnRenderToolStripPanelBackground(ToolStripPanelRenderEventArgs).)
Protected method OnRenderToolStripStatusLabelBackground Raises the RenderToolStripStatusLabelBackground event. (Overrides ToolStripRenderer.OnRenderToolStripStatusLabelBackground(ToolStripItemRenderEventArgs).)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Public event RenderArrow Occurs when an arrow on a ToolStripItem is rendered. (Inherited from ToolStripRenderer.)
Public event RenderButtonBackground Occurs when the background for a ToolStripButton is rendered (Inherited from ToolStripRenderer.)
Public event RenderDropDownButtonBackground Occurs when the background for a ToolStripDropDownButton is rendered. (Inherited from ToolStripRenderer.)
Public event RenderGrip Occurs when the move handle for a ToolStrip is rendered. (Inherited from ToolStripRenderer.)
Public event RenderImageMargin Draws the margin between an image and its container. (Inherited from ToolStripRenderer.)
Public event RenderItemBackground Occurs when the background for a ToolStripItem is rendered. (Inherited from ToolStripRenderer.)
Public event RenderItemCheck Occurs when the image for a selected ToolStripItem is rendered. (Inherited from ToolStripRenderer.)
Public event RenderItemImage Occurs when the image for a ToolStripItem is rendered. (Inherited from ToolStripRenderer.)
Public event RenderItemText Occurs when the text for a ToolStripItem is rendered. (Inherited from ToolStripRenderer.)
Public event RenderLabelBackground Occurs when the background for a ToolStripLabel is rendered. (Inherited from ToolStripRenderer.)
Public event RenderMenuItemBackground Occurs when the background for a ToolStripMenuItem is rendered. (Inherited from ToolStripRenderer.)
Public event RenderOverflowButtonBackground Occurs when the background for an overflow button is rendered. (Inherited from ToolStripRenderer.)
Public event RenderSeparator Occurs when a ToolStripSeparator is rendered. (Inherited from ToolStripRenderer.)
Public event RenderSplitButtonBackground Occurs when the background for a ToolStripSplitButton is rendered. (Inherited from ToolStripRenderer.)
Public event RenderStatusStripSizingGrip Occurs when the display style changes. (Inherited from ToolStripRenderer.)
Public event RenderToolStripBackground Occurs when the background for a ToolStrip is rendered. (Inherited from ToolStripRenderer.)
Public event RenderToolStripBorder Occurs when the border for a ToolStrip is rendered. (Inherited from ToolStripRenderer.)
Public event RenderToolStripContentPanelBackground Draws the background of a ToolStripContentPanel. (Inherited from ToolStripRenderer.)
Public event RenderToolStripPanelBackground Draws the background of a ToolStripPanel. (Inherited from ToolStripRenderer.)
Public event RenderToolStripStatusLabelBackground Draws the background of a ToolStripStatusLabel. (Inherited from ToolStripRenderer.)
Top

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

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);
        }
    }
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ