private void AddPatterns(PathGeometry path, PathFigure pathFigure) { pathFigure.IsFilled = IsFillSymbol; // should be done by the framework ?? if (AtStart) { if (BySegment) { var point = pathFigure.StartPoint; foreach (var segment in pathFigure.Segments) { if (segment.EndPoint() != point) { path.Concat(CreatePattern(point, segment.OrientationAtStart(point) + 180)); point = segment.EndPoint(); } } } else path.Concat(CreatePattern(pathFigure.StartPoint, pathFigure.OrientationAtStart() + 180)); } if (AtEnd) { if (BySegment) { var point = pathFigure.StartPoint; foreach (var segment in pathFigure.Segments) { if (segment.EndPoint() != point) { path.Concat(CreatePattern(segment.EndPoint(), segment.OrientationAtEnd(point))); point = segment.EndPoint(); } } } else path.Concat(CreatePattern(pathFigure.EndPoint(), pathFigure.OrientationAtEnd())); } if (AtMiddle) { if (BySegment) { var point = pathFigure.StartPoint; foreach (var segment in pathFigure.Segments) { path.Concat(CreatePattern(segment.MiddlePoint(point), segment.OrientationAtMiddle(point))); point = segment.EndPoint(); } } else path.Concat(CreatePattern(pathFigure.MiddlePoint(), pathFigure.OrientationAtMiddle())); } }