public void RenderFilledElements(PlotRendererD2D canvas, System.Windows.Rect chartArea, System.Windows.Media.MatrixTransform PrimitiveTransform)
        {
            GeometryAndFlag gnf = null;

            if (!_geometryByFactory.TryGetValue(canvas.D2DFactory.NativePointer, out gnf) || gnf.RecalcGeometry)
            {
                CalculateGeometry(canvas.D2DFactory, chartArea);
            }
            if (_geometryByFactory.TryGetValue(canvas.D2DFactory.NativePointer, out gnf))
            {
                int colorIndex = 0;
                foreach (var childGeometry in gnf.FilledGeometry)
                {
                    System.Windows.Media.Color fillColor = _colors[colorIndex].Item2;
                    if (fillColor != System.Windows.Media.Colors.Transparent)
                    {
                        //Brush brush = IsDashed ? (Brush)(ChartUtilities.CreateHatch50(fillColor, new Size(2, 2))) : (Brush)(new SolidColorBrush(fillColor));
                        var brush = new SolidColorBrush(canvas.RenderTarget, fillColor.ToD2D());
                        var transformedGeometry = new TransformedGeometry(canvas.D2DFactory, childGeometry, PrimitiveTransform.ToD2D());
                        canvas.RenderTarget.FillGeometry(transformedGeometry, brush);
                    }
                    ++colorIndex;
                }
            }
        }
        public void RenderUnfilledElements(PlotRendererD2D canvas, System.Windows.Rect chartArea, System.Windows.Media.MatrixTransform PrimitiveTransform)
        {
            GeometryAndFlag gnf = null;

            if (!_geometryByFactory.TryGetValue(canvas.D2DFactory.NativePointer, out gnf) || gnf.RecalcGeometry)
            {
                CalculateGeometry(canvas.D2DFactory, chartArea);
            }
            if (_geometryByFactory.TryGetValue(canvas.D2DFactory.NativePointer, out gnf))
            {
                int colorIndex = 0;
                foreach (var childGeometry in gnf.UnfilledGeometry)
                {
                    System.Windows.Media.Color lineColor = _colors[colorIndex].Item1;
                    if (lineColor != System.Windows.Media.Colors.Transparent)
                    {
                        var brush = new SolidColorBrush(canvas.RenderTarget, lineColor.ToD2D());
                        var transformedGeometry = new TransformedGeometry(canvas.D2DFactory, childGeometry, PrimitiveTransform.ToD2D());
                        canvas.RenderTarget.DrawGeometry(transformedGeometry, brush, (float)LineThickness);
                    }
                    ++colorIndex;
                }
            }
        }