private void TabPage_TabPaintBackground(object sender, TabControl.TabPaintEventArgs e) { if (TabPaintBackgroundEvent != null) { TabPaintBackgroundEvent(sender, e); } }
private void TabPage_TabPaintBorder(object sender, TabControl.TabPaintEventArgs e) { if (TabPaintBorderEvent != null) { TabPaintBorderEvent(sender, e); } }
/// <summary> /// Paint the tab /// </summary> /// <param name="e"></param> protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) { bool Painting = false; if (Painting) { return; } Painting = true; this.SuspendLayout(); Color RenderBorderColor = new Color(); Color RenderBottomColor = new Color(); Color RenderHighColor = new Color(); Color RenderLowColor = new Color(); System.Drawing.Drawing2D.GraphicsPath GraphicPath = new System.Drawing.Drawing2D.GraphicsPath(); int w = this.Width; CalculateWidth(); if (w != this.Width) { GraphicPath.Dispose(); return; } if (m_Selected) { RenderBorderColor = Helper.RenderColors.BorderColor(m_RenderMode, BorderColor); RenderHighColor = Helper.RenderColors.TabBackHighColor(m_RenderMode, BackHighColor); RenderLowColor = Helper.RenderColors.TabBackLowColor(m_RenderMode, BackLowColor); RenderBottomColor = Helper.RenderColors.TabBackLowColor(m_RenderMode, BackLowColor); } else if (m_Hot) { RenderBorderColor = Helper.RenderColors.BorderColor(m_RenderMode, BorderColor); RenderHighColor = Helper.RenderColors.TabBackHighColor(m_RenderMode, BackHighColor); RenderLowColor = Helper.RenderColors.TabBackLowColor(m_RenderMode, BackLowColor); RenderBottomColor = Helper.RenderColors.BorderColor(m_RenderMode, BorderColor); } else { RenderBorderColor = Helper.RenderColors.BorderColorDisabled(m_RenderMode, BorderColorDisabled); RenderHighColor = Helper.RenderColors.TabBackHighColorDisabled(m_RenderMode, BackHighColorDisabled); RenderLowColor = Helper.RenderColors.TabBackLowColorDisabled(m_RenderMode, BackLowColorDisabled); RenderBottomColor = Helper.RenderColors.BorderColor(m_RenderMode, BorderColor); } e.Graphics.SmoothingMode = m_SmoothingMode; GraphicPath.AddPolygon(GetRegion(Width - 1, Height - 1, System.Convert.ToInt32(this.IsSelected ? Height : Height - 1))); // if is bottom mirror the button vertically if (m_Alignment == TabControl.TabAlignment.Bottom) { MirrorPath(GraphicPath); Color x = RenderHighColor; RenderHighColor = RenderLowColor; RenderLowColor = x; } // Get the correct region including all the borders Region R = new Region(GraphicPath); Region R1 = new Region(GraphicPath); Region R2 = new Region(GraphicPath); Region R3 = new Region(GraphicPath); System.Drawing.Drawing2D.Matrix M1 = new System.Drawing.Drawing2D.Matrix(); System.Drawing.Drawing2D.Matrix M2 = new System.Drawing.Drawing2D.Matrix(); System.Drawing.Drawing2D.Matrix M3 = new System.Drawing.Drawing2D.Matrix(); M1.Translate(0, -0.5F); M2.Translate(0, 0.5F); M3.Translate(1, 0); R1.Transform(M1); R2.Transform(M2); R3.Transform(M3); R.Union(R1); R.Union(R2); R.Union(R3); this.Region = R; RectangleF RF = R.GetBounds(e.Graphics); Rectangle rec = new Rectangle(0, 0, (int)RF.Width, (int)RF.Height); TabControl.TabPaintEventArgs te = default(TabControl.TabPaintEventArgs); te = new TabControl.TabPaintEventArgs(e.Graphics, rec, m_Selected, m_Hot, GraphicPath, Width, Height); if (TabPaintBackgroundEvent != null) // try to owner draw { TabPaintBackgroundEvent(this, te); } System.Drawing.Drawing2D.LinearGradientBrush gb = CreateGradientBrush(new Rectangle(0, 0, this.Width, this.Height), RenderHighColor, RenderLowColor); if (!te.Handled) { e.Graphics.FillPath(gb, GraphicPath); } gb.Dispose(); te.Dispose(); te = new TabControl.TabPaintEventArgs(e.Graphics, rec, m_Selected, m_Hot, GraphicPath, Width, Height); if (TabPaintBorderEvent != null) // try to owner draw { TabPaintBorderEvent(this, te); } if (!te.Handled) { if (m_BorderEnhanced) { Color c = m_Alignment == TabControl.TabAlignment.Bottom ? RenderLowColor : RenderHighColor; Pen p = new Pen(c, (float)m_BorderEnhanceWeight); e.Graphics.DrawLines(p, GraphicPath.PathPoints); p.Dispose(); } Pen p1 = new Pen(RenderBorderColor); e.Graphics.DrawLines(p1, GraphicPath.PathPoints); p1.Dispose(); } te.Dispose(); e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; e.Graphics.DrawLine(new Pen(RenderBottomColor), GraphicPath.PathPoints[0], GraphicPath.PathPoints[GraphicPath.PointCount - 1]); e.Graphics.SmoothingMode = m_SmoothingMode; DrawIcon(e.Graphics); DrawText(e.Graphics); if (m_CloseButtonVisible) { DrawCloseButton(e.Graphics); } this.ResumeLayout(); // do the memory cleanup GraphicPath.Dispose(); M1.Dispose(); M2.Dispose(); M3.Dispose(); R1.Dispose(); R2.Dispose(); R3.Dispose(); R.Dispose(); te.Dispose(); Painting = false; }