Example #1
0
        /// <summary>
        /// Converts population level to a line and polygon using a ChartPrimitive as the baseline
        /// </summary>
        /// <param name="results"></param>
        /// <param name="color"></param>
        /// <param name="label"></param>
        /// <returns></returns>
        public static LineAndPolygon ConvertResultsToPopulationLineAndPolygon(ChartControl factory, float[] results, Color color, string label, ChartPrimitiveXY baseLine)
        {
            ChartPrimitiveXY populationLine = factory.CreateXY();

            populationLine.LineColor   = color;
            populationLine.Label       = label;
            populationLine.LegendColor = color;
            populationLine.IsHitTest   = true;

            if (baseLine == null)
            {
                for (int monthNo = 0; monthNo < results.Length; monthNo += 2)
                {
                    populationLine.AddPoint(new Point((float)monthNo * .5f, results[monthNo]));
                    populationLine.AddPoint(new Point((float)monthNo * .5f + 1f, results[monthNo + 1]));
                }
            }
            else
            {
                for (int monthNo = 0; monthNo < results.Length; monthNo += 2)
                {
                    populationLine.AddPoint(new Point((float)monthNo * .5f, results[monthNo] + baseLine.Points[monthNo].Y));
                    populationLine.AddPoint(new Point((float)monthNo * .5f + 1f, results[monthNo + 1] + baseLine.Points[monthNo + 1].Y));
                }
            }

            ChartPrimitiveXY populationPolygon = ChartUtilities.LineDiffToPolygon(factory, baseLine, populationLine);

            color.A = (byte)(_alpha * color.A);
            populationPolygon.FillColor = color;
            populationPolygon.IsHitTest = false;

            return(new LineAndPolygon(populationLine, populationPolygon));
        }
Example #2
0
        /// <summary>
        /// Gets ChartLines and ChartPolygons for the population line, and
        /// the target line using a baseline.
        /// </summary>
        public static LineAndPolygon ConvertResultsToTargetLineAndPolygon(ChartControl factory, ChartPrimitive populationLine, float[] results, Color color, string label, ChartPrimitiveXY baseLine)
        {
            // Calculate Target Primitives
            ChartPrimitiveXY targetLine = factory.CreateXY();

            targetLine.LineColor = color;
            targetLine.IsDashed  = true;
            targetLine.Label     = label + " Target";
            targetLine.IsHitTest = true;

            if (populationLine.Points.Count == results.Length)
            {
                if (baseLine == null)
                {
                    for (int monthNo = 0; monthNo < results.Length; monthNo += 2)
                    {
                        targetLine.AddPoint(new Point((float)monthNo * .5f, results[monthNo]));
                        targetLine.AddPoint(new Point((float)monthNo * .5f + 1f, results[monthNo + 1]));
                    }
                }
                else
                {
                    for (int monthNo = 0; monthNo < results.Length; monthNo += 2)
                    {
                        targetLine.AddPoint(new Point((float)monthNo * .5f, results[monthNo] + baseLine.Points[monthNo].Y));
                        targetLine.AddPoint(new Point((float)monthNo * .5f + 1f, results[monthNo + 1] + baseLine.Points[monthNo + 1].Y));
                    }
                }
            }
            else
            {
                if (baseLine == null)
                {
                    for (int monthNo = 0; monthNo < results.Length; ++monthNo)
                    {
                        targetLine.AddPoint(new Point((float)monthNo, results[monthNo]));
                        targetLine.AddPoint(new Point((float)monthNo + 1f, results[monthNo]));
                    }
                }
                else
                {
                    for (int monthNo = 0; monthNo < results.Length; ++monthNo)
                    {
                        targetLine.AddPoint(new Point((float)monthNo, results[monthNo] + baseLine.Points[monthNo].Y));
                        targetLine.AddPoint(new Point((float)monthNo + 1f, results[monthNo] + baseLine.Points[monthNo + 1].Y));
                    }
                }
            }

            ChartPrimitiveXY targetPolygon = ChartUtilities.LineDiffToPolygon(factory, baseLine, targetLine);

            color.A = (byte)(_alpha * color.A);
            targetPolygon.FillColor = color;
            targetPolygon.IsDashed  = true;
            targetLine.IsHitTest    = false;

            return(new LineAndPolygon(targetLine, targetPolygon));
        }