/* * OnPaint */ /// <summary> /// Raises the <see cref="E:System.Windows.Forms.Control.Paint"></see> event. /// </summary> /// <param name="e">A <see cref="T:System.Windows.Forms.PaintEventArgs"></see> that contains the event data.</param> protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; using (SolidBrush sb = new SolidBrush(this.BackColor)) { g.FillRectangle(sb, this.ClientRectangle); } Rectangle closeButtonBounds = this.CloseButton.Visible ? this.CloseButton.Bounds : Rectangle.Empty; Rectangle bounds = this.LayoutManager.GetContentRectangle(this.ClientRectangle, closeButtonBounds); Image image = this.Image; System.Drawing.ContentAlignment imageAlign = System.Drawing.ContentAlignment.MiddleLeft; Rectangle imageBounds = this.LayoutManager.GetImageBounds(new NuGenImageBoundsParams(bounds, image, imageAlign)); Rectangle textBounds = this.LayoutManager.GetTextBounds(new NuGenTextBoundsParams(bounds, imageBounds, imageAlign)); NuGenTabButtonPaintParams tabItemParams = new NuGenTabButtonPaintParams(g, this.ClientRectangle); tabItemParams.Font = this.Font; tabItemParams.Image = this.Image; tabItemParams.ImageBounds = imageBounds; tabItemParams.IsRightToLeft = this.RightToLeft == RightToLeft.Yes; tabItemParams.Text = this.Text; if (this.Text != null) { tabItemParams.TextBounds = textBounds; } if (!this.Enabled) { tabItemParams.State = TabItemState.Disabled; } else { switch (this.TabStateTracker.GetControlState()) { case NuGenControlState.Hot: { tabItemParams.State = TabItemState.Hot; break; } case NuGenControlState.Pressed: { tabItemParams.State = TabItemState.Selected; break; } } } Debug.Assert(this.TabRenderer != null, "this.TabRenderer != null"); this.TabRenderer.DrawTabButton(tabItemParams); }
/* * OnPaint */ /// <summary> /// Raises the <see cref="E:System.Windows.Forms.Control.Paint"></see> event. /// </summary> /// <param name="e">A <see cref="T:System.Windows.Forms.PaintEventArgs"></see> that contains the event data.</param> protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; using (SolidBrush sb = new SolidBrush(this.BackColor)) { g.FillRectangle(sb, this.ClientRectangle); } Rectangle closeButtonBounds = this.CloseButton.Visible ? this.CloseButton.Bounds : Rectangle.Empty; Rectangle bounds = this.LayoutManager.GetContentRectangle(this.ClientRectangle, closeButtonBounds); Image image = this.Image; System.Drawing.ContentAlignment imageAlign = System.Drawing.ContentAlignment.MiddleLeft; Rectangle imageBounds = Rectangle.Empty; if (image != null) { imageBounds = this.LayoutManager.GetImageBounds( new NuGenBoundsParams( bounds , imageAlign , new Rectangle(Point.Empty, image.Size) , this.RightToLeft ) ); } Rectangle textBounds = this.LayoutManager.GetTextBounds( new NuGenBoundsParams(bounds, imageAlign, imageBounds, this.RightToLeft) ); NuGenTabButtonPaintParams tabItemParams = new NuGenTabButtonPaintParams(g); tabItemParams.Bounds = this.ClientRectangle; tabItemParams.Font = this.Font; tabItemParams.Image = this.Image; tabItemParams.ImageBounds = imageBounds; tabItemParams.Text = this.Text; if (this.Text != null) { tabItemParams.TextBounds = textBounds; } tabItemParams.State = NuGenTabItemStateTranslator.FromControlState(this.TabStateTracker.GetControlState()); Debug.Assert(this.TabRenderer != null, "this.TabRenderer != null"); this.TabRenderer.DrawTabButton(tabItemParams); }
/* * DrawTabButton */ /// <summary> /// </summary> /// <param name="paintParams"></param> /// <exception cref="ArgumentNullException"> /// <para> /// <paramref name="paintParams"/> is <see langword="null"/>. /// </para> /// </exception> public void DrawTabButton(NuGenTabButtonPaintParams paintParams) { if (paintParams == null) { throw new ArgumentNullException("paintParams"); } Graphics g = paintParams.Graphics; Rectangle bounds = paintParams.Bounds; NuGenControlState currentState = NuGenControlState.Normal; /* Helps to draw background properly if the BackColor property is set to Color.Transparent. */ g.FillRectangle(SystemBrushes.Control, new Rectangle(0, 0, bounds.Width, 2)); switch (paintParams.State) { case TabItemState.Disabled: { currentState = NuGenControlState.Disabled; break; } case TabItemState.Hot: { currentState = NuGenControlState.Hot; break; } case TabItemState.Selected: { currentState = NuGenControlState.Pressed; break; } default: { currentState = NuGenControlState.Normal; break; } } Rectangle tweakedRectangle = NuGenControlPaint.BorderRectangle(bounds); using (NuGenGrfxMode mode = new NuGenGrfxMode(g)) { g.SmoothingMode = SmoothingMode.AntiAlias; DrawRoundBackground(g, tweakedRectangle, currentState, NuGenRoundRectangleStyle.TopRound); DrawRoundBorder(g, tweakedRectangle, currentState, NuGenRoundRectangleStyle.TopRound); } this.DrawText( g, paintParams.TextBounds, currentState, paintParams.Text, paintParams.Font, paintParams.ForeColor, System.Drawing.ContentAlignment.MiddleLeft ); if (paintParams.Image != null) { this.DrawImage( g, paintParams.ImageBounds, currentState, paintParams.Image ); } }