我正在尝试用c#创建一个绘图程序,当我点击鼠标时,我已经在屏幕上绘制了对象。知道我要做的是记录用户点击的所有位置,以便稍后重绘图形。我知道我可以用这个列表做到这一点:
Point recordpoint = new Point(i.X, i.Y);
List<Point> pts = new List<Point>();
pts.Add(recordpoint);
这只会添加最后一次鼠标点击,我需要知道如何在列表中添加无限量的鼠标点击,我不知道如何执行此操作。
如果有人知道怎么做,我会很高兴。
答案 0 :(得分:1)
假设您有一个“OnClick”事件可供处理,那么您可以将集合移动到类级别并在点击时设置新项目:
public class MyClass
{
List<Point> pts = new List<Point>();//This way the member persists
public void OnClick(TypeName i, EventArgs e)//whatever params are..
{
Point recordpoint = new Point(i.X, i.Y);//create element
pts.Add(recordpoint);//insert into collection
}
}
答案 1 :(得分:0)
每次添加点时都会创建一个新列表。
将List<Point> pts
移到Form类的顶层,因此您只创建一个列表。
class PaintForm : Form {
// declare a list of points as a field
private List<Point> pts = new List<Point>();
// ..
private void PictureBox1_OnMouseDown(..) { // or whereever this code was
Point recordpoint = new Point(i.X, i.Y);
pts.Add(recordpoint);
}
// ..
}