Search code examples
c#winformsgraphicscurve

Why do I see this jagged curves?


I have a canvas and draw curve with this code:

using (Graphics g = Graphics.FromImage(canvas.BackgroundImage))
{
    g.DrawCurve(pen, points);

points is array that I fill that by mouse location points. In the result I see some jagged lines that I didn't draw.

You can see them here(in red rectangles):

enter image description here

What can i do about this?


Solution

  • What you is see is the somewhat unlucky combination of the default for Linejoin, which is Miter and the default for MiterLimit, which is 10.

    Instead you have a choice of either picking one of the other LineJoin options or reducing the MiterLimit to say less than half the Pen.Width..

    using (Pen myPen = new Pen(Color.Blue, 24f))
    {
        // either another LineJoine;
        myPen.LineJoin = System.Drawing.Drawing2D.LineJoin.Round;
        // or a reduced MiterLimit:
        myPen.MiterLimit = 1+ myPen.Width / 5f;
    }