protected override void OnPaint(PaintEventArgs p) { var g = p.Graphics; var rect = new Rectangle(0, 0, Width, Height); if (BackgroundImage == null) { if (ControlStyle == StiControlStyle.Office2013Blue) { using (var brush = new SolidBrush(Color.White)) { g.FillRectangle(brush, rect); } } else if (ControlStyle == StiControlStyle.Office2010) { using (var brush = new SolidBrush(Color.FromArgb(245, 245, 245))) { g.FillRectangle(brush, rect); } } else { using (var brush = StiBrushes.GetControlBrush(rect, 90)) { g.FillRectangle(brush, rect); } } } else { StiControlPaint.DrawImageBackground(g, BackgroundImage, rect); } using (var penDark = new Pen(StiColorUtils.Dark(SystemColors.Control, 30))) { if (ControlStyle == StiControlStyle.Office2013Blue || ControlStyle == StiControlStyle.Office2010) { penDark.Color = Color.FromArgb(198, 198, 198); penDark.DashPattern = new float[] { 1f, 2f }; if (lineStyle == StiToolBarLineStyle.Bottom) { g.DrawLine(penDark, rect.X, rect.Bottom - 1, rect.Right - 1, rect.Bottom - 1); } else if (lineStyle == StiToolBarLineStyle.All) { g.DrawRectangle(penDark, rect.X, rect.Y, rect.Right - 1, rect.Bottom - 1); } else { g.DrawLine(penDark, rect.X, rect.Top, rect.Right - 1, rect.Top); g.DrawLine(penDark, rect.X, rect.Bottom - 1, rect.Right - 1, rect.Bottom - 1); } } else { g.DrawLine(penDark, rect.X, rect.Bottom - 1, rect.Right - 1, rect.Bottom - 1); g.DrawLine(penDark, rect.Right - 1, rect.Bottom - 1, rect.Right - 1, rect.Y); } } if (ControlStyle == StiControlStyle.Flat) { int y = (Height - 16) / 2; int x = 4; if (this.RightToLeft == RightToLeft.Yes) { x = this.Width - 6; } DrawDot(g, x, y); DrawDot(g, x, y + 4); DrawDot(g, x, y + 8); DrawDot(g, x, y + 12); } }
protected override void OnPaint(PaintEventArgs p) { var g = p.Graphics; #region Content var contentRect = new Rectangle(0, HeaderHeight, Width, Height - HeaderHeight - PanelDistance); if (BackgroundImage == null) { using (var brush = new SolidBrush(BackColor)) { g.FillRectangle(brush, contentRect.Left, contentRect.Top, contentRect.Width + 1, contentRect.Height + 1); } } else { StiControlPaint.DrawImageBackground(p.Graphics, BackgroundImage, contentRect); } if (DrawBorder) { g.DrawRectangle(BorderPen, 0, 0, Width - 1, Height - PanelDistance); } #endregion #region Header var headerRect = GetHeaderRect(); var image = !Collapsed ? upBitmap : downBitmap; Color textColor = Color.Black; #region Fill rectangle headerRect.Width++; headerRect.Height++; if (HeaderBackgroundImage == null) { if (Selected) { if (isMouseOver) { using (var brush = new LinearGradientBrush(headerRect, StiColorUtils.Light(SelectedHeaderStartColor, 20), StiColorUtils.Light(SelectedHeaderEndColor, 20), 90)) g.FillRectangle(brush, headerRect); } else { using (var brush = new LinearGradientBrush(headerRect, SelectedHeaderStartColor, SelectedHeaderEndColor, 90)) g.FillRectangle(brush, headerRect); } textColor = SystemColors.ActiveCaptionText; } else { if (isMouseOver) { using (var brush = new LinearGradientBrush(headerRect, StiColorUtils.Light(HeaderStartColor, 20), StiColorUtils.Light(HeaderEndColor, 20), 90)) g.FillRectangle(brush, headerRect); } else { using (var brush = new LinearGradientBrush(headerRect, HeaderStartColor, HeaderEndColor, 90)) g.FillRectangle(brush, headerRect); } } } else { StiControlPaint.DrawImageBackground(p.Graphics, HeaderBackgroundImage, headerRect); } headerRect.Width--; headerRect.Height--; #endregion #region Draw button image if (image != null) { var imageRect = new Rectangle(headerRect.Width - 18, (headerRect.Height - 16) / 2, 16, 16); if (textColor != Color.Black && image != null) { image = StiImageUtils.ReplaceImageColor((Bitmap)image, textColor, Color.Black); } g.DrawImage(image, imageRect); } #endregion #region Draw image int imageWidth = 0; if (Image != null) { var imageRect = new Rectangle(headerRect.X + 4, (headerRect.Height - Image.Size.Height) / 2, Image.Size.Width, Image.Size.Height); imageWidth = imageRect.Width + 2; g.DrawImage(Image, imageRect); } #endregion #region Draw header text var textRect = new Rectangle(5 + imageWidth, 0, headerRect.Width - 25 - imageWidth, headerRect.Height); if (textRect.Width > 0) { using (var sf = new StringFormat()) { sf.LineAlignment = StringAlignment.Center; if (RightToLeft == RightToLeft.Yes) { sf.FormatFlags |= StringFormatFlags.DirectionRightToLeft; } sf.FormatFlags = StringFormatFlags.NoWrap; sf.Trimming = StringTrimming.EllipsisCharacter; sf.HotkeyPrefix = HotkeyPrefix.Hide; if (!TitleColor.IsEmpty) { textColor = TitleColor; } using (Brush brush = new SolidBrush(textColor)) { g.DrawString(Text, TitleFont, brush, textRect, sf); } } } #endregion if (DrawBorder) { g.DrawRectangle(BorderPen, headerRect); } #endregion }