/* * 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; if (this.Orientation == NuGenOrientationStyle.Vertical) { NuGenControlPaint.Make90CCWGraphics(g, this.ClientRectangle); } NuGenTrackBarPaintParams paintParams = new NuGenTrackBarPaintParams(g, this.ValueTracker); paintParams.Bounds = this.AgnosticTrackBounds; paintParams.TickStyle = this.TickStyle; paintParams.State = this.StateTracker.GetControlState(); this.Renderer.DrawTrack(paintParams); if (_focused && this.ShowFocusCues) { ControlPaint.DrawFocusRectangle(e.Graphics, this.ClientRectangle); } }
/// <summary> /// </summary> /// <param name="paintParams"></param> /// <exception cref="ArgumentNullException"> /// <para><paramref name="paintParams"/> is <see langword="null"/>.</para> /// </exception> public void DrawTrack(NuGenTrackBarPaintParams paintParams) { if (paintParams == null) { throw new ArgumentNullException("paintParams"); } Graphics g = paintParams.Graphics; Rectangle bounds = paintParams.Bounds; NuGenControlState state = paintParams.State; TickStyle tickStyle = paintParams.TickStyle; INuGenValueTracker valueTracker = paintParams.ValueTracker; /* Track */ Rectangle valueRect = new Rectangle( bounds.Left, bounds.Top, (int)(NuGenSmoothTrackBarRenderer.GetStep(bounds, valueTracker) * (valueTracker.Value - valueTracker.Minimum)), bounds.Height ); if ( valueRect.Width > 0 && valueRect.Height > 0 ) { this.DrawBackground( g, valueRect, state == NuGenControlState.Normal || state == NuGenControlState.Focused ? NuGenControlState.Hot : state ); } this.DrawBorder(g, bounds, state); /* TickLines */ if ((tickStyle & TickStyle.BottomRight) > 0) { this.DrawTickLines( g, NuGenSmoothTrackBarRenderer.GetTickLinesBounds(bounds, TickStyle.BottomRight), state, TickStyle.BottomRight, valueTracker ); } if ((tickStyle & TickStyle.TopLeft) > 0) { this.DrawTickLines( g, NuGenSmoothTrackBarRenderer.GetTickLinesBounds(bounds, TickStyle.TopLeft), state, TickStyle.TopLeft, valueTracker ); } }