コード例 #1
0
 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);
    
 }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: MarkerGeometriesD2D.cs プロジェクト: exojet/ironlab
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 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;
 }
コード例 #6
0
 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;
 }
コード例 #7
0
        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);
        }
コード例 #8
0
 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;
 }
コード例 #9
0
        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);
        }
コード例 #10
0
 internal static Geometry LegendMarkerGeometry(MarkersType markersType, double markersSize)
 {
     return(LegendMarkerGeometry(markersType, markersSize, markersSize));
 }
コード例 #11
0
 internal static Geometry LegendMarkerGeometry(MarkersType markersType, double markersSize)
 {
     return LegendMarkerGeometry(markersType, markersSize, markersSize);
 }
コード例 #12
0
 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;
 }