Esempio n. 1
0
        /// <summary>
        /// Renders an Area chart a canvas. This method is called by the chart class.
        /// </summary>
        /// <param name="canvasWrapper">wrapper class containing info mation about the canvas and chart</param>
        /// <param name="axis">Axis orientation object</param>
        /// <param name="minMax">Data for the extreme values</param>
        /// <param name="gridPaint">Paint object for the grid lines</param>
        public override void RenderChart(CanvasWrapper canvasWrapper, Axis axis, IMinMax minMax)
        {
            CheckConstructionPolicy(nameof(LineChart));

            if (canvasWrapper.NumberPlottedChart < 1)
            {
                DrawHorizontalLabels(canvasWrapper, axis, minMax);
                DrawVerticalLabels(canvasWrapper, axis, minMax);
            }

            var canvas          = canvasWrapper.Canvas;
            var path            = new SKPath();
            var firstPoint      = ConstructionData.First();
            var lastPoint       = ConstructionData.Last();
            var connectionPoint = new SKPoint(lastPoint.X, firstPoint.Y);

            ConstructionData.Add(connectionPoint);
            path.MoveTo(ConstructionData.First());
            foreach (var point in ConstructionData.Skip(1))
            {
                path.LineTo(point);
                if (ShowPoints)
                {
                    canvas.DrawCircle(point, PointRadius, _chartPaint);
                }
            }
            path.FillType = SKPathFillType.EvenOdd;
            path.Close();
            _chartPaint.IsStroke = false;
            canvas.DrawPath(path, _chartPaint);
            canvasWrapper.NumberPlottedChart += 1;

            if (canvasWrapper.CanShowLegend)
            {
                RenderLegend(canvasWrapper, axis, canvas, PointPlotVariant.AreaChart);
            }
        }