Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
146 views
Welcome To Ask or Share your Answers For Others

1 Answer

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...