Exemplo n.º 1
0
        public TechMapPath(Location p_startPoint, Location p_endPoint, byte p_groupIndex = 1)
        {
            this.startPoint = p_startPoint;
            this.endPoint   = p_endPoint;
            this.groupIndex = p_groupIndex;

            QuadraticBezierSegmentData mapQuadraticBezierSegment = new QuadraticBezierSegmentData()
            {
                Point1 = this.middlePoint, Point2 = p_endPoint
            };
            PathFigureData mapPathFigure = new PathFigureData()
            {
                StartPoint = p_startPoint, IsClosed = false
            };

            mapPathFigure.Segments.Add(mapQuadraticBezierSegment);

            PathGeometryData mapPathGeometry = new PathGeometryData();

            mapPathGeometry.Figures.Add(mapPathFigure);

            Brush stroke = Brushes.Transparent;

            this.Data = mapPathGeometry;
            switch (groupIndex)
            {
            case 1: { stroke = new SolidColorBrush(Colors.Red); break; }

            case 2: { stroke = new SolidColorBrush(Colors.Orange); break; }

            case 3: { stroke = new SolidColorBrush(Colors.Yellow); break; }

            case 4: { stroke = new SolidColorBrush(Colors.Green); break; }

            case 5: { stroke = new SolidColorBrush(Colors.LightBlue); break; }

            case 6: { stroke = new SolidColorBrush(Colors.Blue); break; }

            case 7: { stroke = new SolidColorBrush(Colors.Violet); break; }

            case 8: { stroke = new SolidColorBrush(Colors.Black); break; }
            }
            this.HighlightFill = new MapShapeFill()
            {
                Stroke = new SolidColorBrush(Colors.Green), StrokeThickness = 2
            };
            this.ShapeFill = new MapShapeFill()
            {
                Stroke = stroke, StrokeThickness = 10
            };
            this.SelectedFill = new MapShapeFill()
            {
                Stroke = Brushes.Black, StrokeThickness = 10
            };
        }
Exemplo n.º 2
0
        /// <summary> Creates the path geometry data.
        /// </summary>
        /// <param name="nodes">The nodes.</param>
        /// <returns></returns>
        public static PathGeometryData CreatePathGeometryData(IEnumerable <PathNodeData> nodes)
        {
            PathGeometryData geometryData = new PathGeometryData();
            PathFigureData   figure       = null;
            PathSegmentData  segment      = null;

            foreach (var node in nodes)
            {
                if (node.SegmentType == SegmentType.StartPoint)
                {
                    figure = new PathFigureData {
                        StartPoint = node.Point, IsClosed = node.IsClosed
                    };
                    geometryData.Figures.Add(figure);
                }
                else
                {
                    switch (node.SegmentType)
                    {
                    case SegmentType.ArcSegment:
                        throw new NotImplementedException("{C3DB91D2-6511-4274-B60F-99DF3CADF0A3}");

                    case SegmentType.BezierSegment:
                        throw new NotImplementedException("{D811AFE1-EB44-4671-9F27-E7609AEF8B5B}");

                    case SegmentType.LineSegment: {
                        figure.Segments.Add(new PathSegmentData {
                                Nodes = { node }, SegmentType = node.SegmentType
                            });
                        break;
                    }

                    case SegmentType.PolyBezierSegment:
                        throw new NotImplementedException("{3C01C459-4539-4D87-8206-DF1903491B63}");

                    case SegmentType.PolyLineSegment: {
                        if (node.SegmentIndex == 0)
                        {
                            segment = new PathSegmentData {
                                Nodes = { node }, SegmentType = node.SegmentType
                            };
                            figure.Segments.Add(segment);
                        }
                        else
                        {
                            segment.Nodes.Add(node);
                        }
                        break;
                    }

                    case SegmentType.PolyQuadraticBezierSegment:
                        throw new NotImplementedException("{61171A80-E52E-4C93-B7DE-DCF9C65B93F3}");

                    case SegmentType.QuadraticBezierSegment:
                        throw new NotImplementedException("{64CA6FB1-A5B2-4F5E-BE48-5A2E85F6B6B9}");

                    default:
                        throw new NotImplementedException("{E1D79545-F131-4196-B964-A74CBB99DBFD}");
                    }
                }
            }
            return(geometryData);
        }