/// <summary> /// Calculate the values needed to properly display this <see cref="PieItem"/>. /// </summary> /// <param name="pane"> /// A graphic device object to be drawn into. This is normally e.Graphics from the /// PaintEventArgs argument to the Paint() method. /// </param> /// <param name="maxDisplacement">maximum slice displacement</param> private static void CalculatePieChartParams(GraphPane pane, ref double maxDisplacement) { string lblStr = " "; //loop thru slices and get total value and maxDisplacement double pieTotalValue = 0; foreach (PieItem curve in pane.CurveList) { if (curve.IsPie) { pieTotalValue += curve._pieValue; if (curve.Displacement > maxDisplacement) { maxDisplacement = curve.Displacement; } } } double nextStartAngle = 0; //now loop thru and calculate the various angle values foreach (PieItem curve in pane.CurveList) { lblStr = curve._labelStr; curve.StartAngle = (float)nextStartAngle; curve.SweepAngle = (float)(360 * curve.Value / pieTotalValue); curve.MidAngle = curve.StartAngle + curve.SweepAngle / 2; nextStartAngle = curve._startAngle + curve._sweepAngle; PieItem.BuildLabelString(curve); } }