/// <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); } }