/// <summary> /// Add an error bar set (<see cref="ErrorBarItem"/> object) to the plot with the given data points (<see cref="IPointList"/>) and properties. This is /// simplified way to add curves without knowledge of the /// <see cref="CurveList"/> class. An alternative is to use the <see cref="Graph.CurveList"/> Add() method. /// </summary> /// <param name="label"> /// The text label (string) for the curve that will be used as a <see cref="Legend"/> entry. /// </param> /// <param name="points"> /// A <see cref="IPointList"/> of double precision value pairs that define the X and Y values for this curve /// </param> /// <param name="color"> /// The color to used for the curve line, symbols, etc. /// </param> /// <returns> /// An <see cref="ErrorBarItem"/> class for the newly created curve. This can then be used to access all of the curve properties that are not defined as /// arguments to the /// <see cref="AddErrorBar(string,IPointList,Color)"/> method. /// </returns> public ErrorBarItem AddErrorBar(string label, IPointList points, Color color) { ErrorBarItem curve = new ErrorBarItem(label, points, color); this._curveList.Add(curve); return curve; }
/// <summary> /// Draw all the <see cref="ErrorBar"/>'s to the specified <see cref="Graphics"/> /// device as a an error bar at each defined point. /// </summary> /// <param name="g"> /// A graphic device object to be drawn into. This is normally e.Graphics from the PaintEventArgs argument to the Paint() method. /// </param> /// <param name="pane"> /// A reference to the <see cref="GraphPane"/> object that is the parent or owner of this object. /// </param> /// <param name="curve"> /// A <see cref="CurveItem"/> object representing the /// <see cref="Bar"/>'s to be drawn. /// </param> /// <param name="baseAxis"> /// The <see cref="Axis"/> class instance that defines the base (independent) axis for the <see cref="Bar"/> /// </param> /// <param name="valueAxis"> /// The <see cref="Axis"/> class instance that defines the value (dependent) axis for the <see cref="Bar"/> /// </param> /// <param name="scaleFactor"> /// The scaling factor to be used for rendering objects. This is calculated and passed down by the parent <see cref="GraphPane"/> object using the /// <see cref="PaneBase.CalcScaleFactor"/> method, and is used to proportionally adjust font sizes, etc. according to the actual size of the graph. /// </param> public void Draw(Graphics g, GraphPane pane, ErrorBarItem curve, Axis baseAxis, Axis valueAxis, float scaleFactor) { ValueHandler valueHandler = new ValueHandler(pane, false); float pixBase, pixValue, pixLowValue; double scaleBase, scaleValue, scaleLowValue; if (curve.Points != null && this.IsVisible) { using (Pen pen = !curve.IsSelected ? new Pen(this._color, this._penWidth) : new Pen(Selection.Border.Color, Selection.Border.Width)) { // Loop over each defined point for (int i = 0; i < curve.Points.Count; i++) { valueHandler.GetValues(curve, i, out scaleBase, out scaleLowValue, out scaleValue); // Any value set to double max is invalid and should be skipped // This is used for calculated values that are out of range, divide // by zero, etc. // Also, any value <= zero on a log scale is invalid if (!curve.Points[i].IsInvalid3D && (scaleBase > 0 || !baseAxis._scale.IsLog) && ((scaleValue > 0 && scaleLowValue > 0) || !valueAxis._scale.IsLog)) { pixBase = baseAxis.Scale.Transform(curve.IsOverrideOrdinal, i, scaleBase); pixValue = valueAxis.Scale.Transform(curve.IsOverrideOrdinal, i, scaleValue); pixLowValue = valueAxis.Scale.Transform(curve.IsOverrideOrdinal, i, scaleLowValue); // if ( this.fill.IsGradientValueType ) // brush = fill.MakeBrush( _rect, _points[i] ); this.Draw( g, pane, baseAxis is XAxis || baseAxis is X2Axis, pixBase, pixValue, pixLowValue, scaleFactor, pen, curve.IsSelected, curve.Points[i]); } } } } }
/// <summary> /// Add an error bar set (<see cref="ErrorBarItem"/> object) to the plot with the given data points (<see cref="IPointList"/>) and properties. This is /// simplified way to add curves without knowledge of the /// <see cref="CurveList"/> class. An alternative is to use the <see cref="Graph.CurveList"/> Add() method. /// </summary> /// <param name="label"> /// The text label (string) for the curve that will be used as a <see cref="Legend"/> entry. /// </param> /// <param name="x"> /// An array of double precision X values (the independent values) that define the curve. /// </param> /// <param name="y"> /// An array of double precision Y values (the dependent values) that define the curve. /// </param> /// <param name="baseValue"> /// An array of double precision values that define the base value (the bottom) of the bars for this curve. /// </param> /// <param name="color"> /// The color to used for the curve line, symbols, etc. /// </param> /// <returns> /// An <see cref="ErrorBarItem"/> class for the newly created curve. This can then be used to access all of the curve properties that are not defined as /// arguments to the /// <see cref="AddErrorBar(string,IPointList,Color)"/> method. /// </returns> public ErrorBarItem AddErrorBar(string label, double[] x, double[] y, double[] baseValue, Color color) { ErrorBarItem curve = new ErrorBarItem(label, new PointPairList(x, y, baseValue), color); this._curveList.Add(curve); return curve; }
/// <summary> /// Initializes a new instance of the <see cref="ErrorBarItem"/> class. /// The Copy Constructor /// </summary> /// <param name="rhs"> /// The <see cref="ErrorBarItem"/> object from which to copy /// </param> public ErrorBarItem(ErrorBarItem rhs) : base(rhs) { this._bar = new ErrorBar(rhs.Bar); }