C# 在面板上绘制具有多个顶点的路径

C# 在面板上绘制具有多个顶点的路径,c#,winforms,C#,Winforms,我的任务是使用鼠标单击在面板上绘制路径。路径应该是类似于左的东西 单击并释放(x1,y1),移动鼠标,然后左键单击并释放(x2,y2)。然后应该从(x1,y1)到(x2,y2)画一条线。现在,当我将鼠标移动到其他位置,比如(x3,y3),然后左键单击并释放时,应该从(x2,y2)到(x3,y3)绘制一条线 以这种方式,我想画一条有多个顶点的路径,比如说(Xn,Yn) 目前我只能从(x1,y1)到(x2,y2)画图 使用(画笔画笔=新画笔(颜色.蓝色,画笔宽度)) { g、 抽绳(画笔、开始点X、

我的任务是使用鼠标单击在面板上绘制路径。路径应该是类似于左的东西 单击并释放(x1,y1),移动鼠标,然后左键单击并释放(x2,y2)。然后应该从(x1,y1)到(x2,y2)画一条线。现在,当我将鼠标移动到其他位置,比如(x3,y3),然后左键单击并释放时,应该从(x2,y2)到(x3,y3)绘制一条线

以这种方式,我想画一条有多个顶点的路径,比如说(Xn,Yn)

目前我只能从(x1,y1)到(x2,y2)画图

使用(画笔画笔=新画笔(颜色.蓝色,画笔宽度))
{
g、 抽绳(画笔、开始点X、开始点Y、结束点X、结束点Y);
}


有人能告诉我这是否可以实现吗?如果是,请提供示例代码段。提前感谢。

使用您选择的列表或收藏品,然后每当单击/放下时,将当前点添加到列表中,在添加完完整列表后,始终从一个元素到下一个元素,直到结束

您可以使用GraphicsPath来表示它。下面是一个简单的例子:

public partial class Form1 : Form
{

    private int PEN_WIDTH = 5;
    private Point lastPoint = new Point(-1, -1);
    private System.Drawing.Drawing2D.GraphicsPath GP = new System.Drawing.Drawing2D.GraphicsPath();

    public Form1()
    {
        InitializeComponent();
        this.Paint += Form1_Paint;
        this.MouseDown += Form1_MouseDown;
    }

    void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        Point pt = new Point(e.X, e.Y);
        if (lastPoint.X == -1 && lastPoint.Y == -1)
        {
            lastPoint = pt;
        }
        else
        {
            GP.AddLine(lastPoint, pt);
            this.Refresh();
        }
        lastPoint = pt;
    }

    void Form1_Paint(object sender, PaintEventArgs e)
    {
        using (Pen draw_pen = new Pen(Color.Blue, PEN_WIDTH)) 
        {
            Graphics g = e.Graphics;
            g.DrawPath(draw_pen, GP);
        }
    }

}

显然,如果要在一定数量的顶点后停止,可以跟踪单击次数。您可以使用
列表
来表示多组行。

或者只需在
图像
上绘制此
图像
,然后在
面板上绘制此
图像
非常感谢,我将尝试一下。非常感谢。我将尝试一下,并让您知道。