diff --git a/src/ImageSharp/Drawing/Paths/InternalPath.cs b/src/ImageSharp/Drawing/Paths/InternalPath.cs
index 079ebdcf42..7fefd83a6c 100644
--- a/src/ImageSharp/Drawing/Paths/InternalPath.cs
+++ b/src/ImageSharp/Drawing/Paths/InternalPath.cs
@@ -32,7 +32,7 @@ namespace ImageSharp.Drawing.Paths
///
/// The segments.
/// if set to true [is closed path].
- internal InternalPath(IEnumerable segments, bool isClosedPath)
+ internal InternalPath(ILineSegment[] segments, bool isClosedPath)
{
Guard.NotNull(segments, nameof(segments));
@@ -158,9 +158,15 @@ namespace ImageSharp.Drawing.Paths
return oddNodes;
}
- private Vector2[] Simplify(IEnumerable segments)
+ private Vector2[] Simplify(ILineSegment[] segments)
{
- return segments.SelectMany(x => x.AsSimpleLinearPath()).ToArray();
+ List points = new List();
+ foreach(var seg in segments)
+ {
+ points.AddRange(seg.AsSimpleLinearPath());
+ }
+
+ return points.ToArray();
}
private float CalculateLength()
diff --git a/src/ImageSharp/Drawing/Shapes/Polygon.cs b/src/ImageSharp/Drawing/Shapes/Polygon.cs
index 9de1220fb4..b13bf4f2f1 100644
--- a/src/ImageSharp/Drawing/Shapes/Polygon.cs
+++ b/src/ImageSharp/Drawing/Shapes/Polygon.cs
@@ -24,15 +24,6 @@ namespace ImageSharp.Drawing.Shapes
///
/// The segments.
public Polygon(params ILineSegment[] segments)
- : this((IEnumerable)segments)
- {
- }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The segments.
- public Polygon(IEnumerable segments)
{
this.innerPath = new InternalPath(segments, true);
this.pathCollection = new[] { this };