// Renders the Range Control's viewport. void IRangeControlClient.DrawContent(RangeControlPaintEventArgs e) { Rectangle rect = e.ContentBounds; rect.Inflate(0, -3); rect.Height -= ((IRangeControlClient)this).RangeBoxBottomIndent; DrawZeroLine(e, rect); DrawGraph(e, rect); }
protected virtual void DrawZeroLine(RangeControlPaintEventArgs e, Rectangle contentBounds) { double zeroLine = (double)(MaxValue - 0) / (MaxValue - MinValue); if (zeroLine < 0.0 || zeroLine >= 1.0f) { return; } int y = (int)(contentBounds.Y + zeroLine * contentBounds.Height); e.Graphics.DrawLine(Pens.Gray, new Point(contentBounds.X, y), new Point(contentBounds.Right, y)); }
protected virtual void DrawGraph(RangeControlPaintEventArgs e, Rectangle contentBounds) { e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; int start = Math.Max(0, (int)(e.RangeControl.VisibleRangeStartPosition * BarCount) - 2); int end = Math.Min(Data.Length, start + ((int)(e.RangeControl.VisibleRangeWidth * BarCount) + 4)); Point?prevPoint = null; using (Pen pen = new Pen(Color.Blue, 1)) { for (int i = start; i < end; i++) { int y = contentBounds.Y + contentBounds.Height - (int)((double)(Data[i] - MinValue) / (MaxValue - MinValue) * contentBounds.Height); int x = e.CalcX((double)i / BarCount); if (prevPoint.HasValue) { e.Cache.DrawLine(new Point(prevPoint.Value.X, prevPoint.Value.Y), new Point(x, y), Color.Blue, 1); } prevPoint = new Point(x, y); } } e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default; }
void IRangeControlClient.DrawContent(RangeControlPaintEventArgs e) { DrawGraph(e.Graphics, e.ContentBounds); }
bool IRangeControlClient.DrawRuler(RangeControlPaintEventArgs e) { return false; }
void IRangeControlClient.DrawSelection(RangeControlPaintEventArgs e) { }
Rectangle IRangeControlClient.CalculateSelectionBounds(RangeControlPaintEventArgs e, Rectangle rect) { return(rect); }
//TODO public void DrawSelection(RangeControlPaintEventArgs e) { ; }
// Return true if the Client draws the ruler itself. bool IRangeControlClient.DrawRuler(RangeControlPaintEventArgs e) { return(false); }
//TODO public Rectangle CalculateSelectionBounds(RangeControlPaintEventArgs e, Rectangle rect) { return(rect); }
void IRangeControlClient.DrawContent(RangeControlPaintEventArgs e) { DrawGraph(e.Cache, e.ContentBounds); }
Rectangle IRangeControlClient.CalculateSelectionBounds(RangeControlPaintEventArgs e, Rectangle rect) => RangeControlClient.CalculateSelectionBounds(e, rect);
bool IRangeControlClient.DrawRuler(RangeControlPaintEventArgs e) => RangeControlClient.DrawRuler(e);
void IRangeControlClient.DrawContent(RangeControlPaintEventArgs e) => RangeControlClient.DrawContent(e);