protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) { var g = e.Graphics; g.Clear(SkinManager.GetApplicationBackgroundColor()); //Draw background var itemRect = GetItemRect(e.Item); g.FillRectangle(e.Item.Selected && e.Item.Enabled ? SkinManager.GetCmsSelectedItemBrush() : new SolidBrush(SkinManager.GetApplicationBackgroundColor()), itemRect); //Ripple animation var toolStrip = e.ToolStrip as MContextMenuStrip; if (toolStrip != null) { var animationManager = toolStrip.animationManager; var animationSource = toolStrip.animationSource; if (toolStrip.animationManager.IsAnimating() && e.Item.Bounds.Contains(animationSource)) { for (int i = 0; i < animationManager.GetAnimationCount(); i++) { var animationValue = animationManager.GetProgress(i); var rippleBrush = new SolidBrush(Color.FromArgb((int)(51 - (animationValue * 50)), Color.Black)); var rippleSize = (int)(animationValue * itemRect.Width * 2.5); g.FillEllipse(rippleBrush, new Rectangle(animationSource.X - rippleSize / 2, itemRect.Y - itemRect.Height, rippleSize, itemRect.Height * 3)); } } } }
protected override void OnDrawColumnHeader(DrawListViewColumnHeaderEventArgs e) { e.Graphics.FillRectangle(new SolidBrush(SkinManager.GetApplicationBackgroundColor()), new Rectangle(e.Bounds.X, e.Bounds.Y, Width, e.Bounds.Height)); e.Graphics.DrawString(e.Header.Text, SkinManager.ROBOTO_MEDIUM_10, SkinManager.GetSecondaryTextBrush(), new Rectangle(e.Bounds.X + ITEM_PADDING, e.Bounds.Y + ITEM_PADDING, e.Bounds.Width - ITEM_PADDING * 2, e.Bounds.Height - ITEM_PADDING * 2), getStringFormat()); }
protected override void OnRenderSeparator(ToolStripSeparatorRenderEventArgs e) { var g = e.Graphics; g.FillRectangle(new SolidBrush(SkinManager.GetApplicationBackgroundColor()), e.Item.Bounds); g.DrawLine( new Pen(SkinManager.GetDividersColor()), new Point(e.Item.Bounds.Left, e.Item.Bounds.Height / 2), new Point(e.Item.Bounds.Right, e.Item.Bounds.Height / 2)); }
public MContextMenuStrip() { Renderer = new MaterialToolStripRender(); animationManager = new AnimationManager(false) { Increment = 0.07, AnimationType = AnimationType.Linear }; animationManager.OnAnimationProgress += sender => Invalidate(); animationManager.OnAnimationFinished += sender => OnItemClicked(delayesArgs); BackColor = SkinManager.GetApplicationBackgroundColor(); }
protected override void OnDrawItem(DrawListViewItemEventArgs e) { //We draw the current line of items (= item with subitems) on a temp bitmap, then draw the bitmap at once. This is to reduce flickering. var b = new Bitmap(e.Item.Bounds.Width, e.Item.Bounds.Height); var g = Graphics.FromImage(b); //always draw default background g.FillRectangle(new SolidBrush(SkinManager.GetApplicationBackgroundColor()), new Rectangle(new Point(e.Bounds.X, 0), e.Bounds.Size)); if (e.State.HasFlag(ListViewItemStates.Selected)) { //selected background g.FillRectangle(SkinManager.GetFlatButtonPressedBackgroundBrush(), new Rectangle(new Point(e.Bounds.X, 0), e.Bounds.Size)); } else if (e.Bounds.Contains(MouseLocation) && MouseState == MouseState.HOVER) { //hover background g.FillRectangle(SkinManager.GetFlatButtonHoverBackgroundBrush(), new Rectangle(new Point(e.Bounds.X, 0), e.Bounds.Size)); } //Draw separator g.DrawLine(new Pen(SkinManager.GetDividersColor()), e.Bounds.Left, 0, e.Bounds.Right, 0); foreach (ListViewItem.ListViewSubItem subItem in e.Item.SubItems) { //Draw text g.DrawString(subItem.Text, SkinManager.ROBOTO_MEDIUM_10, SkinManager.GetPrimaryTextBrush(), new Rectangle(subItem.Bounds.X + ITEM_PADDING, ITEM_PADDING, subItem.Bounds.Width - 2 * ITEM_PADDING, subItem.Bounds.Height - 2 * ITEM_PADDING), getStringFormat()); } e.Graphics.DrawImage((Image)b.Clone(), new Point(0, e.Item.Bounds.Location.Y)); g.Dispose(); b.Dispose(); }
protected override void OnPaint(PaintEventArgs e) { var g = e.Graphics; g.TextRenderingHint = TextRenderingHint.AntiAlias; g.Clear(SkinManager.GetApplicationBackgroundColor()); g.FillRectangle(SkinManager.ColorScheme.DarkPrimaryBrush, statusBarBounds); g.FillRectangle(SkinManager.ColorScheme.PrimaryBrush, actionBarBounds); //Draw border using (var borderPen = new Pen(SkinManager.GetDividersColor(), 1)) { g.DrawLine(borderPen, new Point(0, actionBarBounds.Bottom), new Point(0, Height - 2)); g.DrawLine(borderPen, new Point(Width - 1, actionBarBounds.Bottom), new Point(Width - 1, Height - 2)); g.DrawLine(borderPen, new Point(0, Height - 1), new Point(Width - 1, Height - 1)); } // Determine whether or not we even should be drawing the buttons. bool showMin = MinimizeBox && ControlBox; bool showMax = MaximizeBox && ControlBox; var hoverBrush = SkinManager.GetFlatButtonHoverBackgroundBrush(); var downBrush = SkinManager.GetFlatButtonPressedBackgroundBrush(); // When MaximizeButton == false, the minimize button will be painted in its place if (buttonState == ButtonState.MinOver && showMin) { g.FillRectangle(hoverBrush, showMax ? minButtonBounds : maxButtonBounds); } if (buttonState == ButtonState.MinDown && showMin) { g.FillRectangle(downBrush, showMax ? minButtonBounds : maxButtonBounds); } if (buttonState == ButtonState.MaxOver && showMax) { g.FillRectangle(hoverBrush, maxButtonBounds); } if (buttonState == ButtonState.MaxDown && showMax) { g.FillRectangle(downBrush, maxButtonBounds); } if (buttonState == ButtonState.XOver && ControlBox) { g.FillRectangle(hoverBrush, xButtonBounds); } if (buttonState == ButtonState.XDown && ControlBox) { g.FillRectangle(downBrush, xButtonBounds); } using (var formButtonsPen = new Pen(SkinManager.ACTION_BAR_TEXT_SECONDARY, 2)) { // Minimize button. if (showMin) { int x = showMax ? minButtonBounds.X : maxButtonBounds.X; int y = showMax ? minButtonBounds.Y : maxButtonBounds.Y; g.DrawLine( formButtonsPen, x + (int)(minButtonBounds.Width * 0.33), y + (int)(minButtonBounds.Height * 0.66), x + (int)(minButtonBounds.Width * 0.66), y + (int)(minButtonBounds.Height * 0.66) ); } // Maximize button if (showMax) { g.DrawRectangle( formButtonsPen, maxButtonBounds.X + (int)(maxButtonBounds.Width * 0.33), maxButtonBounds.Y + (int)(maxButtonBounds.Height * 0.36), (int)(maxButtonBounds.Width * 0.39), (int)(maxButtonBounds.Height * 0.31) ); } // Close button if (ControlBox) { g.DrawLine( formButtonsPen, xButtonBounds.X + (int)(xButtonBounds.Width * 0.33), xButtonBounds.Y + (int)(xButtonBounds.Height * 0.33), xButtonBounds.X + (int)(xButtonBounds.Width * 0.66), xButtonBounds.Y + (int)(xButtonBounds.Height * 0.66) ); g.DrawLine( formButtonsPen, xButtonBounds.X + (int)(xButtonBounds.Width * 0.66), xButtonBounds.Y + (int)(xButtonBounds.Height * 0.33), xButtonBounds.X + (int)(xButtonBounds.Width * 0.33), xButtonBounds.Y + (int)(xButtonBounds.Height * 0.66)); } } //Form title g.DrawString(Text, SkinManager.ROBOTO_MEDIUM_12, SkinManager.ColorScheme.TextBrush, new Rectangle(SkinManager.FORM_PADDING, STATUS_BAR_HEIGHT, Width, ACTION_BAR_HEIGHT), new StringFormat { LineAlignment = StringAlignment.Center }); }