-
-
Notifications
You must be signed in to change notification settings - Fork 46
Closed
Description
Negative, then positive, then negative X or Y causes DrawPathExtensions.Draw to throw ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'edgeIdx').
To recreate use my 3 points and invoke Draw() as follows:
points = new List<PointF>(new PointF[] {
new PointF(170.92926f, 0f),
new PointF(166.381f, 4.548294f),
new PointF(180.50574f, 4.548294f),
new PointF(175.7349f, 9.319138f),
new PointF(147.33237f, 0f),
new PointF(137.5681f, -9.764252f),
new PointF(118.26215f, 0f),
new PointF(113.71387f, 4.548294f),
new PointF(175.76965f, 0f),
new PointF(132.60944f, -43.160202f)});
//Distill it down a little bit.
//Negative Y, then positive, then negative throws exception
points = new List<PointF>(new PointF[] {
//new PointF(170.92926f, 0f),
//new PointF(166.381f, 4.548294f),
//new PointF(180.50574f, 4.548294f),
//new PointF(175.7349f, 9.319138f),
//new PointF(147.33237f, 0f),
new PointF(110f, -10f),
new PointF(120f, 20f),
//new PointF(113.71387f, 4.548294f),
//new PointF(175.76965f, 45.01f),
new PointF(130f, -30f)
});
IPath open_simple_path = new PathBuilder().AddLines(points.ToArray()).Build();
//SixLabors.ImageSharp.Drawing.Processing.DrawPathExtensions.Draw(
//imageContext, Color.AliceBlue, grbx.pathc_global_skeleton[bone].Item2 * f_scale_fac, pathc_local2);
try
{
if (points.Count() >= 2 && bool_non_negative)
SixLabors.ImageSharp.Drawing.Processing.DrawPathExtensions.Draw(
imageContext, Color.AliceBlue, 3, open_simple_path);
} catch (Exception e2)
{
rtb1.Clear();
rtb1.Font = new System.Drawing.Font("Consolas", 10f);
rtb1.AppendText(e2.Message + "\n");
//autocode the point array that caused the exception
rtb1.AppendText($"points = new List<PointF>(new PointF[] {{\n");
for (int i = 0; i < points.Count(); i++)
{
rtb1.AppendText($"new PointF({points[i].X}f, {points[i].Y}f)");
if (i < points.Count() - 1)
rtb1.AppendText(",\n");
}
rtb1.AppendText($"\n}});\n");
}
- ImageSharp.Drawing version: beta13
- Other ImageSharp packages and versions:
- Environment (Operating system, version and so on): win10 19043.1288
- .NET Framework version: .NET 6.0
- Additional information:
My application is a gerber language parser and writer for circuit board design tools. I have mouse centered zooming on circuit board layers. Initially, I render circuit traces as a skeleton with pen width, and the traces go all over the place. There's a similar bug in Fill(), but I work around it by doing a null clip before and after clipping to an image rectangle to ensure no negative values in the path before invoking Fill(). Now I'm in a dark alley using these open paths rather than closed paths that can be clipped.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working