如何在windows窗体c#中绘制线条?

如何在windows窗体c#中绘制线条?,c#,winforms,drawing,C#,Winforms,Drawing,我有一个C#windows窗体应用程序。我需要画一条直线(从一个点到另一个点),我可以选择删除它,同时保留所有其他直线(先前绘制)。当我点击它时,这条线就被删除了。我看到了清除所有内容的不同方法,而不仅仅是先前绘制的一条线。您可以使用Graphics.DrawLine创建线(System.Drawing命名空间) DrawLine(画笔、xCord1、yCord1、xCord2、yCord2),其中画笔给出线条画笔的颜色和宽度(System.Drawing.Brush Brush、float w

我有一个C#windows窗体应用程序。我需要画一条直线(从一个点到另一个点),我可以选择删除它,同时保留所有其他直线(先前绘制)。当我点击它时,这条线就被删除了。我看到了清除所有内容的不同方法,而不仅仅是先前绘制的一条线。

您可以使用Graphics.DrawLine创建线(System.Drawing命名空间)

DrawLine(画笔、xCord1、yCord1、xCord2、yCord2),其中画笔给出线条画笔的颜色和宽度(System.Drawing.Brush Brush、float width)

现在,没有内置的方法来检测点击线-它只是屏幕上的像素。因此,您必须执行一些自定义代码,并将行(如果要创建多行)存储在数组/列表中。 要检测使用此方法绘制的点击线,您需要通过一些计算检测点击点是否落在线上,例如:

然后,如果单击的点落在阵列上,则从阵列中删除该线-您将在阵列中得到未单击的线。
最后,执行Graphics.Clear或this.Invalidate()并重新绘制数组中剩余的行。

从技术上讲,如果找不到更好的解决方案,可以使用高度为1的矩形。从这里开始,它只是一个简单的数学计算的位置和旋转,使其工作。这是否解释了它想要什么?如果您希望能够单击它来删除它,我可能会使用一个按钮元素,您可以定位它,将其拉伸成一行,并给它一个单击即可删除的事件。-您需要决定要绘制哪个控件;有几个规则和限制,比如在绘制重叠控件时。。。只需使用
起始位置
位置
点,而不是绘制矩形。