protected override void OnPaint(PaintEventArgs e) { var helper = new GraphicsHelper(e.Graphics); var orientation = SideBarOrientation.Left; if (SideBar != null) { orientation = SideBar.Orientation; } for (var i = 0; i < Tabs.Count; i++) { SideBarTab tab = Tabs[i]; Point currentPosition = Point.Empty; Rectangle tabRect = Rectangle.Empty, textRect = Rectangle.Empty; switch (orientation) { case SideBarOrientation.Left: currentPosition = new Point(TabMarginLeft, i*(TabHeight + TabSpacing) + TabMarginTop); tabRect = new Rectangle(currentPosition.X, currentPosition.Y, Width, TabHeight); break; case SideBarOrientation.Right: currentPosition = new Point(TabMarginLeft, i*(TabHeight + TabSpacing) + TabMarginTop); tabRect = new Rectangle(currentPosition.X - TabMarginLeft*2, currentPosition.Y, Width, TabHeight); break; } var leftFormat = new StringFormat(); leftFormat.LineAlignment = StringAlignment.Center; leftFormat.Alignment = StringAlignment.Near; if (i == SelectedIndex || i == hoverIndex) { var gradient = new Rectangle(tabRect.X + 1, tabRect.Y + 1, tabRect.Width - 3, (tabRect.Height - 1)/2); if (i == SelectedIndex) { helper.RoundedFill(UColor.White, tabRect, 4); } if (i == hoverIndex) { helper.RoundedFill(UColor.Blend(0x50, UColor.White), tabRect, 4); } helper.RoundedGradient(UColor.Blend(0x05, UColor.Black), UColor.Blend(0x20, UColor.Black), tabRect, 90, 4); if (i == SelectedIndex) { helper.RoundedGradient(UColor.Blend(0xdd, UColor.White), UColor.White, gradient, 90, 4); } helper.RoundedOutline(UColor.Blend(0x60, UColor.White), tabRect.Inflated(1), 4); if (i == SelectedIndex) { helper.RoundedOutline(UColor.Blend(0x90, UColor.Black), tabRect, 4); } else if (i == hoverIndex) { helper.RoundedOutline(UColor.Blend(0x50, UColor.Black), tabRect, 4); } } if (tab.Changed) { helper.RoundedFill(UColor.Blend(0x30, UColor.White), tabRect, 4); helper.RoundedFill(UColor.Blend(0x20, UColor.Red), tabRect, 4); } if (tab.HasIcon) { e.Graphics.DrawImage(tab.Icon, new Point(currentPosition.X + TabMarginLeft, currentPosition.Y + TabHeight/2 - tab.Icon.Height/2)); currentPosition.Offset(TabMarginLeft + 2 + tab.Icon.Width, 0); } textRect = new Rectangle(currentPosition.X, currentPosition.Y, Width, TabHeight); if (i == SelectedIndex) { helper.Text(tab.Caption, Font, UColor.Blend(0xff, UColor.White), textRect.ShrinkedY(-2), leftFormat); helper.Text(tab.Caption, Font, UColor.Blend(0xdd, UColor.Black), textRect, leftFormat); } else { helper.Text(tab.Caption, Font, UColor.Blend(0xee, UColor.Black), textRect.ShrinkedY(-2), leftFormat); helper.Text(tab.Caption, Font, UColor.Blend(0xff, UColor.White), textRect, leftFormat); } } }
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e) { var helper = new GraphicsHelper(e.Graphics); var itemBounds = new Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1); var button = e.Item as ToolStripButton; if (e.Item.Selected && !e.Item.Pressed || (button != null && button.Checked)) { helper.RoundedFill(UColor.White, itemBounds, 4); helper.RoundedGradient( UColor.Blend(0x80, UColor.Black), UColor.Blend(0x60, UColor.Black), itemBounds, 90, 4); } if (e.Item.Pressed) { helper.RoundedFill(UColor.White, itemBounds, 4); helper.RoundedGradient( UColor.Blend(0xa0, UColor.Black), UColor.Blend(0x60, UColor.Black), itemBounds, 90, 4); } if (e.Item.Selected || e.Item.Pressed || (button != null && button.Checked)) { for (int i = innerShadow; i >= 0; i--) { helper.RoundedOutline(UColor.Blend((byte) ((5 + innerShadow*10) - i*10), UColor.Black), itemBounds.Inflated(i + 2), i + 1); } helper.RoundedOutline(UColor.Blend(0x60, UColor.Black), itemBounds.Inflated(1), 4); helper.RoundedOutline(UColor.Blend(0xff, UColor.White), itemBounds, 4); } }