Exemplo n.º 1
0
        protected void RenderLegend(CanvasWrapper canvasWrapper, Axis axis, SKCanvas canvas,
                                    PointPlotVariant plotVariant)
        {
            var   start                = (canvasWrapper.ChartArea.Bottom + 60);
            var   end                  = start + (40f * canvasWrapper.NumberPlottedChart);
            var   leftEdge             = canvasWrapper.ChartArea.Left + 10;
            float heightPaddingForText = 0;

            canvas.Save();
            axis.AntiOrientAxis(float.MaxValue);
            switch (plotVariant)
            {
            case PointPlotVariant.LineChart:
                _chartPaint.IsStroke = false;
                heightPaddingForText = 7;
                canvas.DrawLine(leftEdge, end, canvasWrapper.ChartArea.Left + 40, end, _chartPaint);
                break;

            case PointPlotVariant.ScatterChart:
                _chartPaint.IsStroke = false;
                heightPaddingForText = 7;
                canvas.DrawCircle(leftEdge + 20, end, 7, _chartPaint);
                break;

            case PointPlotVariant.AreaChart:
                heightPaddingForText = 15;
                canvas.DrawRect(leftEdge, end, 37, 25, _chartPaint);
                break;

            default:
                break;
            }
            canvas.Restore();
            axis.DrawAndPositionLegend(ChartName, end + heightPaddingForText, leftEdge + 40, _chartPaint);
        }
Exemplo n.º 2
0
        protected void RenderLegend(CanvasWrapper canvasWrapper, Axis axis, SKCanvas canvas,
                                    PointPlotVariant plotVariant)
        {
            canvasWrapper.NumberOfDrawnLegend++;
            float start;

            if (canvasWrapper.ThisIsiOSOrAndroid)
            {
                start = canvasWrapper.ChartArea.Bottom + MarginFromChartToLegend;
            }
            else
            {
                start = (canvasWrapper.Converter.YOffset * 2) + MarginFromChartToLegend;
            }
            float end      = 0;
            float leftEdge = 0;

            end      = start + (canvasWrapper.LegendItemSpacing * canvasWrapper.NumberOfDrawnLegend);
            leftEdge = canvasWrapper.LegendDrawingStartX + LeftEdgeLegendMargin;

            float heightPaddingForText = 0;

            canvas.Save();
            axis.AntiOrientAxis(float.MaxValue);
            switch (plotVariant)
            {
            case PointPlotVariant.LineChart:
                _chartPaint.IsStroke = false;
                heightPaddingForText = 7;
                canvas.DrawLine(leftEdge, end, canvasWrapper.LegendDrawingStartX + canvasWrapper.LegendItemSpacing,
                                end, _chartPaint);
                break;

            case PointPlotVariant.ScatterChart:
                _chartPaint.IsStroke = false;
                heightPaddingForText = 7;
                canvas.DrawCircle(leftEdge + DistanceToCenterOfLegendCircle,
                                  end, 7, _chartPaint);
                if (!canvasWrapper.ThisIsiOSOrAndroid)
                {
                    leftEdge += 10;
                }
                break;

            case PointPlotVariant.AreaChart:
                heightPaddingForText = 15;
                canvas.DrawRect(leftEdge, end, WidthOfLegendRect, HeightOfLegendRect
                                , _chartPaint);
                if (!canvasWrapper.ThisIsiOSOrAndroid)
                {
                    leftEdge += WidthOfLegendRect;
                }
                break;

            default:
                break;
            }
            canvas.Restore();

            axis.DrawAndPositionLegend(ChartName, end + heightPaddingForText,
                                       leftEdge + canvasWrapper.LegendItemSpacing, _chartPaint);

            if (canvasWrapper.NumberOfDrawnLegend == NumberOfLegendItem)
            {
                canvasWrapper.LegendDrawingStartX += canvasWrapper.ChartArea.Width / (NumberOfLegendItem + 1);
                canvasWrapper.NumberOfDrawnLegend  = 0;
            }
        }