/// <summary> /// Draw polygon on layer with layerIndex Index. /// </summary> /// <param name="layerIndex"></param> /// <param name="points"></param> /// <param name="borderColor"></param> /// <param name="fillColor"></param> /// <param name="opacity"></param> /// <param name="fillPattern"></param> /// <param name="patternSize"></param> public void Draw(int layerIndex, System.Drawing.PointF[] points, System.Drawing.Color?borderColor, System.Drawing.Color?fillColor, float opacity, xPFT.Charting.Base.FillPattern fillPattern, float patternSize) { if (layerIndex < device.layers.Count) { var tmpGeo = new PathGeometry(device.factory); GeometrySink sink1 = tmpGeo.Open(); Vector2[] tmpPointList = DrawingBase.Convertor.ToVector2(points); sink1.BeginFigure(tmpPointList[0], new FigureBegin()); sink1.AddLines(tmpPointList); sink1.EndFigure(new FigureEnd()); sink1.Close(); if (fillColor != null) { if (device.renderTarget != prevRenderTarget || fillColor != prevFillColor || fillPattern != prevFillPattern || opacity != prevOpacity) { fillBrush = BrushMaker.GetPatternBrush(device.renderTarget, (System.Drawing.Color)fillColor, opacity, fillPattern, patternSize); prevFillColor = (System.Drawing.Color)fillColor; prevFillPattern = fillPattern; prevOpacity = opacity; prevRenderTarget = device.renderTarget; } device.layers[layerIndex].FillGeometry(tmpGeo, fillBrush); } if (borderColor != null) { device.layers[layerIndex].DrawGeometry(tmpGeo, new SharpDX.Direct2D1.SolidColorBrush(device.renderTarget, xPFT.DrawingBase.Convertor.ColorConvertor((System.Drawing.Color)borderColor, opacity)), lineWidth); } } }
/// <summary> /// Draw an ellipse in a rectangle. /// </summary> /// <param name="rectangle"></param> /// <param name="color"></param> public void Draw(int layerIndex, System.Drawing.RectangleF rectangle, System.Drawing.Color?borderColor, System.Drawing.Color?fillColor, float opacity, xPFT.Charting.Base.FillPattern fillPattern, float patternSize) { var tmpEllipse = new SharpDX.Direct2D1.Ellipse(new Vector2(rectangle.X + rectangle.Width / 2, rectangle.Y + rectangle.Height / 2), rectangle.Width / 2, rectangle.Height / 2); if (fillColor != null) { if (device.renderTarget != prevRenderTarget || fillColor != prevFillColor || fillPattern != prevFillPattern || opacity != prevOpacity) { fillBrush = BrushMaker.GetPatternBrush(device.renderTarget, (System.Drawing.Color)fillColor, opacity, fillPattern, patternSize); prevFillColor = (System.Drawing.Color)fillColor; prevFillPattern = fillPattern; prevOpacity = opacity; prevRenderTarget = device.renderTarget; } device.layers[layerIndex].FillEllipse(tmpEllipse, fillBrush); } if (borderColor != null) { device.layers[layerIndex].DrawEllipse(tmpEllipse, new SharpDX.Direct2D1.SolidColorBrush(device.renderTarget, xPFT.DrawingBase.Convertor.ColorConvertor((System.Drawing.Color)borderColor, opacity)), lineWidth); } }