protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { if (renderer is ToolStripProfessionalRenderer) { if (e.Item.Selected || ((ToolStripButton)e.Item).Checked) { Rectangle rect = new Rectangle(0, 0, e.Item.Width, e.Item.Height); Rectangle rect2 = new Rectangle(1, 1, e.Item.Width - 2, e.Item.Height - 2); LinearGradientBrush b = new LinearGradientBrush(rect, DockDrawHelper.ColorSelectedBG_White, DockDrawHelper.ColorSelectedBG_Blue, LinearGradientMode.Vertical); e.Graphics.FillRectangle(b, rect); Rectangle rect3 = new Rectangle(rect2.Left - 1, rect2.Top - 1, rect2.Width + 1, rect2.Height + 1); Rectangle rect4 = new Rectangle(rect3.Left + 1, rect3.Top + 1, rect3.Width - 2, rect3.Height - 2); e.Graphics.DrawRectangle(new Pen(DockDrawHelper.ColorSelectedBG_Border), rect3); e.Graphics.DrawRectangle(new Pen(DockDrawHelper.ColorSelectedBG_White), rect4); } if (e.Item.Pressed) { Rectangle rect = new Rectangle(1, 1, e.Item.Width - 2, e.Item.Height - 2); LinearGradientBrush b = new LinearGradientBrush(rect, DockDrawHelper.ColorSelectedBG_White, DockDrawHelper.ColorSelectedBG_Blue, LinearGradientMode.Vertical); e.Graphics.FillRectangle(b, rect); Rectangle rect2 = new Rectangle(rect.Left - 1, rect.Top - 1, rect.Width + 1, rect.Height + 1); e.Graphics.DrawRectangle(new Pen(DockDrawHelper.ColorSelectedBG_Border), rect2); } } else { renderer.DrawButtonBackground(e); } }
protected override void OnPaint(PaintEventArgs e) { if (Owner == null) { return; } ToolStripRenderer renderer = ToolStripManager.Renderer; var oldHeight = Height; var oldParent = Parent; Parent = null; Height = Height / 2; e.Graphics.TranslateTransform(0, currentButton == 1 ? Height : 0); renderer.DrawButtonBackground(new ToolStripItemRenderEventArgs(e.Graphics, this)); e.Graphics.TranslateTransform(0, currentButton == 1 ? -Height : 0); Height = oldHeight; Parent = oldParent; bool wrap = false; int textWidth = Math.Max(MeasureTextWidth(TextFirst, ref wrap), MeasureTextWidth(TextSecond, ref wrap)); var flags = TextFormatFlags.Left | TextFormatFlags.VerticalCenter; if (wrap) { flags |= TextFormatFlags.WordBreak; } if (ImageFirst != null && TextFirst != null) { if (Enabled) { e.Graphics.DrawImage(ImageFirst, new Point(Padding.Left, Height / 4 - ImageFirst.Height / 2)); } else { ControlPaint.DrawImageDisabled(e.Graphics, ImageFirst, Padding.Left, Height / 4 - ImageFirst.Height / 2, Color.Transparent); } var textRectangle = new Rectangle(Padding.Left + ImageFirst.Width, 0, textWidth, Height / 2); renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, TextFirst, textRectangle, ForeColor, Font, flags)); } if (ImageSecond != null && TextSecond != null) { if (Enabled) { e.Graphics.DrawImage(ImageSecond, new Point(Padding.Left, Height * 3 / 4 - ImageSecond.Height / 2)); } else { ControlPaint.DrawImageDisabled(e.Graphics, ImageSecond, Padding.Left, Height * 3 / 4 - ImageSecond.Height / 2, Color.Transparent); } var textRectangle = new Rectangle(Padding.Left + ImageSecond.Width, Height / 2, textWidth, Height / 2); renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, TextSecond, textRectangle, ForeColor, Font, flags)); } Image = null; }
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { if (renderer is ToolStripProfessionalRenderer) { Boolean isOver = false; Color back = Globals.MainForm.GetThemeColor("ToolStripItem.BackColor"); Color border = Globals.MainForm.GetThemeColor("ToolStripItem.BorderColor"); Color active = Globals.MainForm.GetThemeColor("ToolStripMenu.DropDownBorderColor"); if (e.Item is ToolStripButton) { ToolStripButton button = e.Item as ToolStripButton; Rectangle bBounds = button.Owner.RectangleToScreen(button.Bounds); isOver = bBounds.Contains(Control.MousePosition); } if (e.Item.Selected || ((ToolStripButton)e.Item).Checked || (isOver && e.Item.Enabled)) { Rectangle rect = new Rectangle(0, 0, e.Item.Width, e.Item.Height); Rectangle rect2 = new Rectangle(1, 1, e.Item.Width - 2, e.Item.Height - 2); LinearGradientBrush b = new LinearGradientBrush(rect, back == Color.Empty ? DockDrawHelper.ColorSelectedBG_White : back, back == Color.Empty ? DockDrawHelper.ColorSelectedBG_Blue : back, LinearGradientMode.Vertical); e.Graphics.FillRectangle(b, rect); Rectangle rect3 = new Rectangle(rect2.Left - 1, rect2.Top - 1, rect2.Width + 1, rect2.Height + 1); Rectangle rect4 = new Rectangle(rect3.Left + 1, rect3.Top + 1, rect3.Width - 2, rect3.Height - 2); e.Graphics.DrawRectangle(new Pen(border == Color.Empty ? DockDrawHelper.ColorSelectedBG_Border : border), rect3); e.Graphics.DrawRectangle(new Pen(back == Color.Empty ? DockDrawHelper.ColorSelectedBG_White : back), rect4); } if (e.Item.Pressed) { Rectangle rect = new Rectangle(1, 1, e.Item.Width - 2, e.Item.Height - 2); LinearGradientBrush b = new LinearGradientBrush(rect, back == Color.Empty ? DockDrawHelper.ColorSelectedBG_White : back, back == Color.Empty ? DockDrawHelper.ColorSelectedBG_Blue : back, LinearGradientMode.Vertical); e.Graphics.FillRectangle(b, rect); Rectangle rect2 = new Rectangle(rect.Left - 1, rect.Top - 1, rect.Width + 1, rect.Height + 1); e.Graphics.DrawRectangle(new Pen(active == Color.Empty ? DockDrawHelper.ColorSelectedBG_Border : active), rect2); } } else { renderer.DrawButtonBackground(e); } }
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { Graphics g = e.Graphics; TabStrip tabs = e.ToolStrip as TabStrip; TabStripButton tab = e.Item as TabStripButton; if (tabs == null || tab == null) { if (currentRenderer != null) { currentRenderer.DrawButtonBackground(e); } else { base.OnRenderButtonBackground(e); } return; } bool selected = tab.Checked; bool hovered = tab.Selected; int top = 0; int left = 0; int width = tab.Bounds.Width - 1; int height = tab.Bounds.Height - 1; Rectangle drawBorder; if (UseVS) { if (tabs.Orientation == Orientation.Horizontal) { if (!selected) { top = selOffset; height -= (selOffset - 1); } else { top = 1; } drawBorder = new Rectangle(0, 0, width, height); } else { if (!selected) { left = selOffset; width -= (selOffset - 1); } else { left = 1; } drawBorder = new Rectangle(0, 0, height, width); } using (Bitmap b = new Bitmap(drawBorder.Width, drawBorder.Height)) { VisualStyleElement el = VisualStyleElement.Tab.TabItem.Normal; if (selected) { el = VisualStyleElement.Tab.TabItem.Pressed; } if (hovered) { el = VisualStyleElement.Tab.TabItem.Hot; } if (!tab.Enabled) { el = VisualStyleElement.Tab.TabItem.Disabled; } if (!selected || hovered) { drawBorder.Width++; } else { drawBorder.Height++; } using (Graphics gr = Graphics.FromImage(b)) { VisualStyleRenderer rndr = new VisualStyleRenderer(el); rndr.DrawBackground(gr, drawBorder); if (tabs.Orientation == Orientation.Vertical) { if (Mirrored) { b.RotateFlip(RotateFlipType.Rotate270FlipXY); } else { b.RotateFlip(RotateFlipType.Rotate270FlipNone); } } else { if (Mirrored) { b.RotateFlip(RotateFlipType.RotateNoneFlipY); } } if (Mirrored) { left = tab.Bounds.Width - b.Width - left; top = tab.Bounds.Height - b.Height - top; } g.DrawImage(b, left, top); } } } else { if (tabs.Orientation == Orientation.Horizontal) { if (!selected) { top = selOffset; height -= (selOffset - 1); } else { top = 1; } if (Mirrored) { left = 1; top = 0; } else { top++; } width--; } else { if (!selected) { left = selOffset; width--; } else { left = 1; } if (Mirrored) { left = 0; top = 1; } } height--; drawBorder = new Rectangle(left, top, width, height); using (GraphicsPath gp = new GraphicsPath()) { if (Mirrored && tabs.Orientation == Orientation.Horizontal) { gp.AddLine(drawBorder.Left, drawBorder.Top, drawBorder.Left, drawBorder.Bottom - 2); gp.AddArc(drawBorder.Left, drawBorder.Bottom - 3, 2, 2, 90, 90); gp.AddLine(drawBorder.Left + 2, drawBorder.Bottom, drawBorder.Right - 2, drawBorder.Bottom); gp.AddArc(drawBorder.Right - 2, drawBorder.Bottom - 3, 2, 2, 0, 90); gp.AddLine(drawBorder.Right, drawBorder.Bottom - 2, drawBorder.Right, drawBorder.Top); } else if (!Mirrored && tabs.Orientation == Orientation.Horizontal) { gp.AddLine(drawBorder.Left, drawBorder.Bottom, drawBorder.Left, drawBorder.Top + 2); gp.AddArc(drawBorder.Left, drawBorder.Top + 1, 2, 2, 180, 90); gp.AddLine(drawBorder.Left + 2, drawBorder.Top, drawBorder.Right - 2, drawBorder.Top); gp.AddArc(drawBorder.Right - 2, drawBorder.Top + 1, 2, 2, 270, 90); gp.AddLine(drawBorder.Right, drawBorder.Top + 2, drawBorder.Right, drawBorder.Bottom); } else if (Mirrored && tabs.Orientation == Orientation.Vertical) { gp.AddLine(drawBorder.Left, drawBorder.Top, drawBorder.Right - 2, drawBorder.Top); gp.AddArc(drawBorder.Right - 2, drawBorder.Top + 1, 2, 2, 270, 90); gp.AddLine(drawBorder.Right, drawBorder.Top + 2, drawBorder.Right, drawBorder.Bottom - 2); gp.AddArc(drawBorder.Right - 2, drawBorder.Bottom - 3, 2, 2, 0, 90); gp.AddLine(drawBorder.Right - 2, drawBorder.Bottom, drawBorder.Left, drawBorder.Bottom); } else { gp.AddLine(drawBorder.Right, drawBorder.Top, drawBorder.Left + 2, drawBorder.Top); gp.AddArc(drawBorder.Left, drawBorder.Top + 1, 2, 2, 180, 90); gp.AddLine(drawBorder.Left, drawBorder.Top + 2, drawBorder.Left, drawBorder.Bottom - 2); gp.AddArc(drawBorder.Left, drawBorder.Bottom - 3, 2, 2, 90, 90); gp.AddLine(drawBorder.Left + 2, drawBorder.Bottom, drawBorder.Right, drawBorder.Bottom); } if (selected || hovered) { Color fill = (hovered) ? Color.WhiteSmoke : Color.White; if (renderMode == ToolStripRenderMode.Professional) { fill = (hovered) ? ProfessionalColors.ButtonCheckedGradientBegin : ProfessionalColors.ButtonCheckedGradientEnd; using (LinearGradientBrush br = new LinearGradientBrush(tab.ContentRectangle, fill, ProfessionalColors.ButtonCheckedGradientMiddle, LinearGradientMode.Vertical)) g.FillPath(br, gp); } else { using (SolidBrush br = new SolidBrush(fill)) g.FillPath(br, gp); } } using (Pen p = new Pen((selected) ? ControlPaint.Dark(SystemColors.AppWorkspace) : SystemColors.AppWorkspace)) g.DrawPath(p, gp); } } }
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { ActualRenderer.DrawButtonBackground(e); }
protected override void OnPaint(PaintEventArgs e) { if (Owner == null) { return; } ToolStripRenderer renderer = ToolStripManager.Renderer; if (PlatformCompat.Runtime.UseToolStripRenderHack) { var oldHeight = Height; var oldParent = Parent; Parent = null; Height = Height / 2; e.Graphics.TranslateTransform(0, currentButton == 1 ? Height : 0); renderer.DrawButtonBackground(new ToolStripItemRenderEventArgs(e.Graphics, this)); e.Graphics.TranslateTransform(0, currentButton == 1 ? -Height : 0); Height = oldHeight; Parent = oldParent; } else { if (currentButton == 0) { e.Graphics.DrawRectangle(new Pen(Color.Black), 0, 0, Width - 1, Height / 2 - 1); } if (currentButton == 1) { e.Graphics.DrawRectangle(new Pen(Color.Black), 0, Height / 2, Width - 1, Height / 2 - 1); } } bool wrap = false; int textWidth = Math.Max(MeasureTextWidth(FirstText, ref wrap), MeasureTextWidth(SecondText, ref wrap)); var flags = TextFormatFlags.Left | TextFormatFlags.VerticalCenter; if (wrap) { flags |= TextFormatFlags.WordBreak; } if (FirstImage != null && FirstText != null) { if (Enabled) { e.Graphics.DrawImage(FirstImage, new Point(Padding.Left, Height / 4 - FirstImage.Height / 2)); } else { ControlPaint.DrawImageDisabled(e.Graphics, FirstImage, Padding.Left, Height / 4 - FirstImage.Height / 2, Color.Transparent); } var textRectangle = new Rectangle(Padding.Left + FirstImage.Width, 0, textWidth, Height / 2); renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, FirstText, textRectangle, ForeColor, Font, flags)); } if (SecondImage != null && SecondText != null) { if (Enabled) { e.Graphics.DrawImage(SecondImage, new Point(Padding.Left, Height * 3 / 4 - SecondImage.Height / 2)); } else { ControlPaint.DrawImageDisabled(e.Graphics, SecondImage, Padding.Left, Height * 3 / 4 - SecondImage.Height / 2, Color.Transparent); } var textRectangle = new Rectangle(Padding.Left + SecondImage.Width, Height / 2, textWidth, Height / 2); renderer.DrawItemText(new ToolStripItemTextRenderEventArgs(e.Graphics, this, SecondText, textRectangle, ForeColor, Font, flags)); } Image = null; }