C#.NET中的粗线绘制问题

dat*_*ayo 1 c# graphics system.drawing

我想使用Graphics.Lines()方法绘制粗线.但看起来API有一些错误.如果您尝试使用以下代码呈现用户控件,您将获得奇怪的图像.我想知道是否有一些平滑模式或类似的东西可以照顾这个线条图故障.

private void UserControl1_Paint(object sender, PaintEventArgs e)
    {
        int n = 100;
        Point[] points = new Point[n];

        double x = 2;
        int y = 50;

        for (int i = 0; i < n; i++)
        {
            Point p = new Point();
            p.X = 200 + (int)(i * x);
            p.Y = 200 + (int)(Math.Sin(i * 0.2) * y);
            points[i] = p;
        }

        Pen pen = new Pen(new SolidBrush(Color.Blue));
        //Pen pen = new Pen(new LinearGradientBrush(new Point(0, 0), new Point(0, 100), Color.Black, Color.Red));
        pen.Width = 200;
        e.Graphics.DrawLines(pen, points);
    }
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 6

你看到GDI +试图在线上绘制终端上限的效果.如此厚厚的笔不会达到一个好的结局.关于你从达芬奇用扫帚画蒙娜丽莎的想象.固定:

        Pen pen = new Pen(new SolidBrush(Color.Blue));
        pen.EndCap = System.Drawing.Drawing2D.LineCap.Square;
        pen.StartCap = System.Drawing.Drawing2D.LineCap.Square;
Run Code Online (Sandbox Code Playgroud)

或者绘制一个多边形,以便GDI +更好地了解正面和背面:

        e.Graphics.DrawPolygon(pen, points);
Run Code Online (Sandbox Code Playgroud)

嗯,它看起来不再像魔鬼了.保持线宽与线条中的细节成比例.