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