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