Results 1 to 4 of 4

Thread: Custom VS2008 style MenuStrip and ToolStrip Renderer

  1. #1

    Thread Starter
    New Member
    Join Date
    May 2010
    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

    Thread Starter
    New Member
    Join Date
    May 2010
    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 2005
    Location
    Lansing, MI; USA
    Posts
    4,286

    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 2015 Enterprise on Win10 Enterprise x64.

    CodeBank: All ThreadsColors ComboBoxFading & Gradient FormMoveItemListBox/MoveItemListViewMultilineListBoxMenuButtonToolStripCheckBoxStart with Windows

  4. #4
    I'm about to be a PowerPoster! Hack's Avatar
    Join Date
    Aug 2001
    Location
    Searching for mendhak
    Posts
    58,333

    Re: Custom VS2008 style MenuStrip and ToolStrip Renderer

    Split from this CodeBank VB.NET thread into its own thread and moved to C#

Posting Permissions

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



Click Here to Expand Forum to Full Width