コード例 #1
0
            internal static IReadOnlyList<Line> CreateOffsetLines(IReadOnlyList<Line> lines, double offset)
            {
                var result = new Line[lines.Count];
                for (var i = 0; i < lines.Count; i++)
                {
                    var line = lines[i].Offset(offset);
                    if (i > 0)
                    {
                        var previous = result[i - 1];
                        var extended = previous.TrimOrExtendEndWith(line);
                        if (extended == null)
                        {
                            continue;
                        }

                        previous = extended.Value;
                        result[i - 1] = previous;
                        line = new Line(previous.EndPoint, line.EndPoint);
                    }

                    result[i] = line;
                }

                return result;
            }
コード例 #2
0
 private static PathGeometry CreatePath(Line l1, Line l2)
 {
     var geometry = new PathGeometry();
     var figure = new PathFigure
     {
         StartPoint = l1.StartPoint,
         IsClosed = true,
         IsFilled = true,
     };
     var polyLineSegment = new PolyLineSegment();
     polyLineSegment.Points.Add(l1.EndPoint);
     polyLineSegment.Points.Add(l2.EndPoint);
     polyLineSegment.Points.Add(l2.StartPoint);
     figure.Segments.Add(polyLineSegment);
     geometry.Figures.Add(figure);
     return geometry;
 }