Results 1 to 4 of 4

Thread: Custom VS2008 style MenuStrip and ToolStrip Renderer

  1. #1
    New Member
    Join Date
    May 10
    Posts
    2

    Custom VS2008 style MenuStrip and ToolStrip Renderer

    And here is the C# version of the above:

    C# Code:
    1. public partial class VS2008Renderer
    2. {
    3.     private static readonly Color ColorHorBG_GrayBlue = Color.FromArgb(255, 233, 236, 250);
    4.     private static readonly Color ColorHorBG_White = Color.FromArgb(255, 244, 247, 252);
    5.     private static readonly Color ColorSubmenuBG = Color.FromArgb(255, 240, 240, 240);
    6.     private static readonly Color ColorImageMarginBlue = Color.FromArgb(255, 212, 216, 230);
    7.     private static readonly Color ColorImageMarginWhite = Color.FromArgb(255, 244, 247, 252);
    8.     private static readonly Color ColorImageMarginLine = Color.FromArgb(255, 160, 160, 180);
    9.     private static readonly Color ColorSelectedBG_Blue = Color.FromArgb(255, 186, 228, 246);
    10.     private static readonly Color ColorSelectedBG_Header_Blue = Color.FromArgb(255, 146, 202, 230);
    11.     private static readonly Color ColorSelectedBG_White = Color.FromArgb(255, 241, 248, 251);
    12.     private static readonly Color ColorSelectedBG_Border = Color.FromArgb(255, 150, 217, 249);
    13.     private static readonly Color ColorSelectedBG_Drop_Blue = Color.FromArgb(255, 139, 195, 225);
    14.     private static readonly Color ColorSelectedBG_Drop_Border = Color.FromArgb(255, 48, 127, 177);
    15.     private static readonly Color ColorMenuBorder = Color.FromArgb(255, 160, 160, 160);
    16.     private static readonly Color ColorCheckBG = Color.FromArgb(255, 206, 237, 250);
    17.  
    18.     private static readonly Color ColorVerBG_GrayBlue = Color.FromArgb(255, 196, 203, 219);
    19.     private static readonly Color ColorVerBG_White = Color.FromArgb(255, 250, 250, 253);
    20.     private static readonly Color ColorVerBG_Shadow = Color.FromArgb(255, 181, 190, 206);
    21.  
    22.     private static readonly Color ColorToolstripBtnGrad_Blue = Color.FromArgb(255, 129, 192, 224);
    23.     private static readonly Color ColorToolstripBtnGrad_White = Color.FromArgb(255, 237, 248, 253);
    24.     private static readonly Color ColorToolstripBtn_Border = Color.FromArgb(255, 41, 153, 255);
    25.     private static readonly Color ColorToolstripBtnGrad_Blue_Pressed = Color.FromArgb(255, 124, 177, 204);
    26.     private static readonly Color ColorToolstripBtnGrad_White_Pressed = Color.FromArgb(255, 228, 245, 252);
    27.  
    28.     private static void DrawRoundedRectangle(Graphics graphics, int xAxis, int yAxis, int width, int height, int diameter, Color color)
    29.     {
    30.         Pen pen = new Pen(color);
    31.  
    32.         var BaseRect = new RectangleF(xAxis, yAxis, width, height);
    33.         var ArcRect = new RectangleF(BaseRect.Location, new SizeF(diameter, diameter));
    34.  
    35.         graphics.DrawArc(pen, ArcRect, 180, 90);
    36.         graphics.DrawLine(pen, xAxis + (int)(diameter / 2), yAxis, xAxis + width - (int)(diameter / 2), yAxis);
    37.  
    38.         ArcRect.X = BaseRect.Right - diameter;
    39.         graphics.DrawArc(pen, ArcRect, 270, 90);
    40.         graphics.DrawLine(pen, xAxis + width, yAxis + (int)(diameter / 2), xAxis + width, yAxis + height - (int)(diameter / 2));
    41.  
    42.         ArcRect.Y = BaseRect.Bottom - diameter;
    43.         graphics.DrawArc(pen, ArcRect, 0, 90);
    44.         graphics.DrawLine(pen, xAxis + (int)(diameter / 2), yAxis + height, xAxis + width - (int)(diameter / 2), yAxis + height);
    45.  
    46.         ArcRect.X = BaseRect.Left;
    47.         graphics.DrawArc(pen, ArcRect, 90, 90);
    48.         graphics.DrawLine(pen, xAxis, yAxis + (int)(diameter / 2), xAxis, yAxis + height - (int)(diameter / 2));
    49.     }
    50. }

  2. #2
    New Member
    Join Date
    May 10
    Posts
    2

    Re: Custom VisualStudio2008 style MenuStrip and ToolStrip Renderer

    C# Code:
    1. public partial class VS2008Renderer
    2. {
    3.     public class MenuStripRenderer : System.Windows.Forms.ToolStripRenderer
    4.     {
    5.         protected override void InitializeItem(System.Windows.Forms.ToolStripItem item)
    6.         {
    7.             base.InitializeItem(item);
    8.             item.ForeColor = Color.Black;
    9.         }
    10.  
    11.         protected override void Initialize(System.Windows.Forms.ToolStrip toolStrip)
    12.         {
    13.             base.Initialize(toolStrip);
    14.             toolStrip.ForeColor = Color.Black;
    15.         }
    16.  
    17.         protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
    18.         {
    19.             base.OnRenderToolStripBackground(e);
    20.  
    21.             var b = new LinearGradientBrush(e.AffectedBounds, ColorHorBG_GrayBlue, ColorHorBG_White,
    22.                 LinearGradientMode.Horizontal);
    23.             e.Graphics.FillRectangle(b, e.AffectedBounds);
    24.         }
    25.  
    26.         protected override void OnRenderImageMargin(System.Windows.Forms.ToolStripRenderEventArgs e)
    27.         {
    28.             base.OnRenderImageMargin(e);
    29.  
    30.             var b = new LinearGradientBrush(e.AffectedBounds, ColorImageMarginWhite, ColorImageMarginBlue,
    31.                 LinearGradientMode.Horizontal);
    32.  
    33.             var DarkLine = new SolidBrush(ColorImageMarginLine);
    34.             var WhiteLine = new SolidBrush(Color.White);
    35.             var rect = new Rectangle(e.AffectedBounds.Width, 2, 1, e.AffectedBounds.Height);
    36.             var rect2 = new Rectangle(e.AffectedBounds.Width + 1, 2, 1, e.AffectedBounds.Height);
    37.  
    38.             var SubmenuBGbrush = new SolidBrush(ColorSubmenuBG);
    39.             var rect3 = new Rectangle(0, 0, e.ToolStrip.Width, e.ToolStrip.Height);
    40.  
    41.             var borderPen = new Pen(ColorMenuBorder);
    42.             var rect4 = new Rectangle(0, 1, e.ToolStrip.Width - 1, e.ToolStrip.Height - 2);
    43.  
    44.             e.Graphics.FillRectangle(SubmenuBGbrush, rect3);
    45.             e.Graphics.FillRectangle(b, e.AffectedBounds);
    46.             e.Graphics.FillRectangle(DarkLine, rect);
    47.             e.Graphics.FillRectangle(WhiteLine, rect2);
    48.             e.Graphics.DrawRectangle(borderPen, rect4);
    49.         }
    50.  
    51.         protected override void OnRenderItemCheck(System.Windows.Forms.ToolStripItemImageRenderEventArgs e)
    52.         {
    53.             base.OnRenderItemCheck(e);
    54.  
    55.             if (e.Item.Selected)
    56.             {
    57.                 var rect = new Rectangle(3, 1, 20, 20);
    58.                 var rect2 = new Rectangle(4, 2, 18, 18);
    59.                 var b = new SolidBrush(ColorToolstripBtn_Border);
    60.                 var b2 = new SolidBrush(ColorCheckBG);
    61.  
    62.                 e.Graphics.FillRectangle(b, rect);
    63.                 e.Graphics.FillRectangle(b2, rect2);
    64.                 e.Graphics.DrawImage(e.Image, new Point(5, 3));
    65.             }
    66.             else
    67.             {
    68.                 var rect = new Rectangle(3, 1, 20, 20);
    69.                 var rect2 = new Rectangle(4, 2, 18, 18);
    70.                 var b = new SolidBrush(ColorSelectedBG_Drop_Border);
    71.                 var b2 = new SolidBrush(ColorCheckBG);
    72.  
    73.                 e.Graphics.FillRectangle(b, rect);
    74.                 e.Graphics.FillRectangle(b2, rect2);
    75.                 e.Graphics.DrawImage(e.Image, new Point(5, 3));
    76.             }
    77.         }
    78.  
    79.         protected override void OnRenderSeparator(System.Windows.Forms.ToolStripSeparatorRenderEventArgs e)
    80.         {
    81.             base.OnRenderSeparator(e);
    82.  
    83.             var DarkLine = new SolidBrush(ColorImageMarginLine);
    84.             var WhiteLine = new SolidBrush(Color.White);
    85.             var rect = new Rectangle(32, 3, e.Item.Width - 32, 1);
    86.             var rect2 = new Rectangle(32, 4, e.Item.Width - 32, 1);
    87.             e.Graphics.FillRectangle(DarkLine, rect);
    88.             e.Graphics.FillRectangle(WhiteLine, rect2);
    89.         }
    90.  
    91.         protected override void OnRenderArrow(System.Windows.Forms.ToolStripArrowRenderEventArgs e)
    92.         {
    93.             e.ArrowColor = Color.Black;
    94.  
    95.             base.OnRenderArrow(e);
    96.         }
    97.  
    98.         protected override void OnRenderMenuItemBackground(System.Windows.Forms.ToolStripItemRenderEventArgs e)
    99.         {
    100.             base.OnRenderMenuItemBackground(e);
    101.  
    102.             if (e.Item.Enabled)
    103.             {
    104.                 if (!e.Item.IsOnDropDown && e.Item.Selected)
    105.                 {
    106.                     var rect = new Rectangle(3, 2, e.Item.Width - 6, e.Item.Height - 4);
    107.                     var b = new LinearGradientBrush(rect, ColorSelectedBG_White, ColorSelectedBG_Header_Blue, LinearGradientMode.Vertical);
    108.                     var b2 = new SolidBrush(ColorToolstripBtn_Border);
    109.  
    110.                     e.Graphics.FillRectangle(b, rect);
    111.                     DrawRoundedRectangle(e.Graphics, rect.Left - 1, rect.Top - 1, rect.Width, rect.Height + 1, 4, ColorToolstripBtn_Border);
    112.                     DrawRoundedRectangle(e.Graphics, rect.Left - 2, rect.Top - 2, rect.Width + 2, rect.Height + 3, 4, Color.White);
    113.                     e.Item.ForeColor = Color.Black;
    114.                 }
    115.                 else if (e.Item.IsOnDropDown && e.Item.Selected)
    116.                 {
    117.                     var rect = new Rectangle(4, 2, e.Item.Width - 6, e.Item.Height - 4);
    118.                     var b = new LinearGradientBrush(rect, ColorSelectedBG_White, ColorSelectedBG_Blue, LinearGradientMode.Vertical);
    119.                     var b2 = new SolidBrush(ColorSelectedBG_Border);
    120.  
    121.                     e.Graphics.FillRectangle(b, rect);
    122.                     DrawRoundedRectangle(e.Graphics, rect.Left - 1, rect.Top - 1, rect.Width, rect.Height + 1, 6, ColorSelectedBG_Border);
    123.                     e.Item.ForeColor = Color.Black;
    124.                 }
    125.  
    126.                 if (((ToolStripMenuItem)e.Item).DropDown.Visible && !e.Item.IsOnDropDown)
    127.                 {
    128.                     var rect = new Rectangle(3, 2, e.Item.Width - 6, e.Item.Height - 4);
    129.                     var b = new LinearGradientBrush(rect, Color.White, ColorSelectedBG_Drop_Blue, LinearGradientMode.Vertical);
    130.                     var b2 = new SolidBrush(ColorSelectedBG_Drop_Border);
    131.  
    132.                     e.Graphics.FillRectangle(b, rect);
    133.                     DrawRoundedRectangle(e.Graphics, rect.Left - 1, rect.Top - 1, rect.Width, rect.Height + 1, 4, ColorSelectedBG_Drop_Border);
    134.                     DrawRoundedRectangle(e.Graphics, rect.Left - 2, rect.Top - 2, rect.Width + 2, rect.Height + 3, 4, Color.White);
    135.                     e.Item.ForeColor = Color.Black;
    136.                 }
    137.             }
    138.         }
    139.     }
    140.  
    141.     public class ToolStripRenderer : System.Windows.Forms.ToolStripProfessionalRenderer
    142.     {
    143.         protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
    144.         {
    145.             base.OnRenderToolStripBackground(e);
    146.  
    147.             var b = new LinearGradientBrush(e.AffectedBounds, ColorVerBG_White, ColorVerBG_GrayBlue,
    148.                 LinearGradientMode.Vertical);
    149.             var shadow = new SolidBrush(ColorVerBG_Shadow);
    150.             var rect = new Rectangle(0, e.ToolStrip.Height - 2, e.ToolStrip.Width, 1);
    151.             e.Graphics.FillRectangle(b, e.AffectedBounds);
    152.             e.Graphics.FillRectangle(shadow, rect);
    153.         }
    154.  
    155.         protected override void OnRenderButtonBackground(System.Windows.Forms.ToolStripItemRenderEventArgs e)
    156.         {
    157.             base.OnRenderButtonBackground(e);
    158.             if (e.Item.Selected || ((ToolStripButton)e.Item).Checked)
    159.             {
    160.                 var rectBorder = new Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1);
    161.                 var rect = new Rectangle(1, 1, e.Item.Width - 2, e.Item.Height - 2);
    162.                 var b = new LinearGradientBrush(rect, ColorToolstripBtnGrad_White, ColorToolstripBtnGrad_Blue,
    163.                     LinearGradientMode.Vertical);
    164.                 var b2 = new SolidBrush(ColorToolstripBtn_Border);
    165.  
    166.                 e.Graphics.FillRectangle(b2, rectBorder);
    167.                 e.Graphics.FillRectangle(b, rect);
    168.             }
    169.  
    170.             if (e.Item.Pressed)
    171.             {
    172.                 var rectBorder = new Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1);
    173.                 var rect = new Rectangle(1, 1, e.Item.Width - 2, e.Item.Height - 2);
    174.                 var b = new LinearGradientBrush(rect, ColorToolstripBtnGrad_White_Pressed, ColorToolstripBtnGrad_Blue_Pressed,
    175.                     LinearGradientMode.Vertical);
    176.                 var b2 = new SolidBrush(ColorToolstripBtn_Border);
    177.  
    178.                 e.Graphics.FillRectangle(b2, rectBorder);
    179.                 e.Graphics.FillRectangle(b, rect);
    180.             }
    181.         }
    182.     }
    183. }

  3. #3
    PowerPoster JuggaloBrotha's Avatar
    Join Date
    Sep 05
    Location
    Lansing, MI; USA
    Posts
    3,788

    Re: Custom VisualStudio2008 style MenuStrip and ToolStrip Renderer

    rpmodell, this doesn't belong in the vb codebank, you should create a thread in the c# codebank (include a link to this thread in the first post)
    Currently using: VS 2010 Ultimate on Win7 Ultimate x64.



    CodeBank: All Threads • Colors ComboBox • Fading & Gradient Form • MoveItemListBox/MoveItemListView • MultilineListBox • MenuButton • ToolStripCheckBox • Start with Windows

  4. #4
    Super Moderator Hack's Avatar
    Join Date
    Aug 01
    Location
    Searching for mendhak
    Posts
    58,283

    Re: Custom VS2008 style MenuStrip and ToolStrip Renderer

    Split from this CodeBank VB.NET thread into its own thread and moved to C#
    Please use [Code]your code goes in here[/Code] tags when posting code.
    When you have received an answer to your question, please mark it as resolved using the Thread Tools menu.
    Before posting your question, did you look here?
    Got a question on Linux? Visit our Linux sister site.
    I dont answer coding questions via PM or EMail. Please post a thread in the appropriate forum section.

    Creating A Wizard In VB.NET
    Paging A Recordset
    What is wrong with using On Error Resume Next
    Good Article: Language Enhancements In Visual Basic 2010
    Upgrading VB6 Code To VB.NET
    Microsoft MVP 2005/2006/2007/2008/2009/2010/2011/2012/Defrocked

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •