Example #1
0
        /// <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);
            }
        }