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