public void SetGeometry(MarkersType markersType, double markersSize) { if (Geometry != null) { Geometry.Dispose(); Geometry = null; } if (Factory == null) return; float width = (float)Math.Abs(markersSize); float height = (float)Math.Abs(markersSize); this.xOffsetMarker = 0; // width / 2; this.yOffsetMarker = 0; // height / 2; Geometry = MarkerGeometriesD2D.MarkerGeometry(markersType, Factory, width, height); }
public static Geometry GetGenericGeometry(MarkersType markersType, double width, double height) { StreamGeometry geometry = new StreamGeometry(); GenericMarker markerSpecification = GenericMarkerLookup[markersType]; using (StreamGeometryContext ctx = geometry.Open()) { ctx.BeginFigure(new Point(markerSpecification.X[0] * width, markerSpecification.Y[0] * height), false /* is filled */, true /* is closed */); int n = markerSpecification.X.Length; for (int i = 1; i < n; ++i) { ctx.LineTo(new Point(markerSpecification.X[i] * width, markerSpecification.Y[i] * height), true /* is stroked */, false /* is smooth join */); } } return(geometry); }
public static Geometry MarkerGeometry(MarkersType markersType, Factory factory, float width, float height) { Geometry geometry = null; switch (markersType) { case MarkersType.None: break; case MarkersType.Square: geometry = new RectangleGeometry(factory, new System.Drawing.RectangleF() { X = 0, Y = 0, Width = width, Height = height }); break; case MarkersType.Circle: geometry = new EllipseGeometry(factory, new Ellipse() { Point = new System.Drawing.PointF(0, 0), RadiusX = width / 2, RadiusY = height / 2, }); break; default: GenericMarker markerSpecification = MarkerGeometries.GenericMarkerLookup[markersType]; geometry = new PathGeometry(factory); using (GeometrySink sink = (geometry as PathGeometry).Open()) { PointF p0 = new PointF((float)markerSpecification.X[0] * width, (float)markerSpecification.Y[0] * height); sink.BeginFigure(p0, FigureBegin.Hollow); int n = markerSpecification.X.Length; for (int i = 1; i < n; ++i) { sink.AddLine(new PointF((float)markerSpecification.X[i] * width, (float)markerSpecification.Y[i] * height)); } sink.EndFigure(FigureEnd.Closed); sink.Close(); } break; } return(geometry); }
public void SetGeometry(MarkersType markersType, double markersSize) { if (Geometry != null) { Geometry.Dispose(); Geometry = null; } if (Factory == null) { return; } float width = (float)Math.Abs(markersSize); float height = (float)Math.Abs(markersSize); this.xOffsetMarker = 0; // width / 2; this.yOffsetMarker = 0; // height / 2; Geometry = MarkerGeometriesD2D.MarkerGeometry(markersType, Factory, width, height); }
public static Geometry MarkerGeometry(MarkersType markersType, Factory factory, float width, float height) { Geometry geometry = null; switch (markersType) { case MarkersType.None: break; case MarkersType.Square: geometry = new RectangleGeometry(factory, new SharpDX.RectangleF() { X = 0, Y = 0, Width = width, Height = height }); break; case MarkersType.Circle: geometry = new EllipseGeometry(factory, new Ellipse() { Point = new Vector2(0, 0), RadiusX = width / 2, RadiusY = height / 2, }); break; default: GenericMarker markerSpecification = MarkerGeometries.GenericMarkerLookup[markersType]; geometry = new PathGeometry(factory); using (GeometrySink sink = (geometry as PathGeometry).Open()) { Vector2 p0 = new Vector2((float)markerSpecification.X[0] * width, (float)markerSpecification.Y[0] * height); sink.BeginFigure(p0, FigureBegin.Hollow); int n = markerSpecification.X.Length; for (int i = 1; i < n; ++i) { sink.AddLine(new Vector2((float)markerSpecification.X[i] * width, (float)markerSpecification.Y[i] * height)); } sink.EndFigure(FigureEnd.Closed); sink.Close(); } break; } return geometry; }
internal static Geometry LegendMarkerGeometry(MarkersType markersType, double width, double height) { Geometry legendMarkerGeometry = null; switch (markersType) { case MarkersType.None: break; case MarkersType.Square: legendMarkerGeometry = MarkerGeometries.RectangleMarker(width, height, new Point(0, 0)); break; case MarkersType.Circle: legendMarkerGeometry = MarkerGeometries.EllipseMarker(width, height, new Point(0, 0)); break; default: legendMarkerGeometry = GetGenericGeometry(markersType, width, height); break; } return legendMarkerGeometry; }
internal static Geometry LegendMarkerGeometry(MarkersType markersType, double width, double height) { Geometry legendMarkerGeometry = null; switch (markersType) { case MarkersType.None: break; case MarkersType.Square: legendMarkerGeometry = MarkerGeometries.RectangleMarker(width, height, new Point(0, 0)); break; case MarkersType.Circle: legendMarkerGeometry = MarkerGeometries.EllipseMarker(width, height, new Point(0, 0)); break; default: legendMarkerGeometry = GetGenericGeometry(markersType, width, height); break; } return(legendMarkerGeometry); }
internal static Geometry MarkersAsGeometry(Curve curve, MatrixTransform graphToCanvas, MarkersType markersType, double markersSize) { double xScale = graphToCanvas.Matrix.M11; double xOffset = graphToCanvas.Matrix.OffsetX; double yScale = graphToCanvas.Matrix.M22; double yOffset = graphToCanvas.Matrix.OffsetY; GeometryGroup markers = new GeometryGroup(); double width = Math.Abs(markersSize); double height = Math.Abs(markersSize); Geometry markerGeometry = LegendMarkerGeometry(markersType, markersSize); if (markerGeometry == null) return null; markerGeometry.Freeze(); for (int i = 0; i < curve.xTransformed.Length; ++i) { if (!curve.includeMarker[i]) continue; double xCanvas = curve.xTransformed[i] * xScale + xOffset; double yCanvas = curve.yTransformed[i] * yScale + yOffset; Geometry newMarker = markerGeometry.Clone(); newMarker.Transform = new TranslateTransform(xCanvas, yCanvas); markers.Children.Add(newMarker); } markers.Freeze(); return markers; }
internal static Geometry MarkersAsGeometry(Curve curve, MatrixTransform graphToCanvas, MarkersType markersType, double markersSize) { double xScale = graphToCanvas.Matrix.M11; double xOffset = graphToCanvas.Matrix.OffsetX; double yScale = graphToCanvas.Matrix.M22; double yOffset = graphToCanvas.Matrix.OffsetY; GeometryGroup markers = new GeometryGroup(); double width = Math.Abs(markersSize); double height = Math.Abs(markersSize); Geometry markerGeometry = LegendMarkerGeometry(markersType, markersSize); if (markerGeometry == null) { return(null); } markerGeometry.Freeze(); for (int i = 0; i < curve.xTransformed.Length; ++i) { if (!curve.includeMarker[i]) { continue; } double xCanvas = curve.xTransformed[i] * xScale + xOffset; double yCanvas = curve.yTransformed[i] * yScale + yOffset; Geometry newMarker = markerGeometry.Clone(); newMarker.Transform = new TranslateTransform(xCanvas, yCanvas); markers.Children.Add(newMarker); } markers.Freeze(); return(markers); }
internal static Geometry LegendMarkerGeometry(MarkersType markersType, double markersSize) { return(LegendMarkerGeometry(markersType, markersSize, markersSize)); }
internal static Geometry LegendMarkerGeometry(MarkersType markersType, double markersSize) { return LegendMarkerGeometry(markersType, markersSize, markersSize); }
public static Geometry GetGenericGeometry(MarkersType markersType, double width, double height) { StreamGeometry geometry = new StreamGeometry(); GenericMarker markerSpecification = GenericMarkerLookup[markersType]; using (StreamGeometryContext ctx = geometry.Open()) { ctx.BeginFigure(new Point(markerSpecification.X[0] * width, markerSpecification.Y[0] * height), false /* is filled */, true /* is closed */); int n = markerSpecification.X.Length; for (int i = 1; i < n; ++i) { ctx.LineTo(new Point(markerSpecification.X[i] * width, markerSpecification.Y[i] * height), true /* is stroked */, false /* is smooth join */); } } return geometry; }