2014-03-26 2 views
0

C#으로 페인트 프로그램을 만들려고합니다. 마우스를 클릭 할 때 화면에 그릴 개체가 있습니다. 내가하려는 일을 알면 나중에 그래픽을 다시 그릴 수 있도록 사용자가 클릭하는 모든 위치를 기록하는 것입니다. 나는이와 목록을 할 수있는 알고C#에서 여러 마우스 클릭을 기록하는 방법 #

Point recordpoint = new Point(i.X, i.Y); 
List<Point> pts = new List<Point>(); 
pts.Add(recordpoint); 

이 마지막 마우스 클릭을 추가하고 나는 목록에 마우스 클릭의 무한한 양을 추가하는 방법을 알아야 내가 수행하는 방법에 아무 생각이 없다 이.

새로운 방법이 있다면 누구나 좋아할 것입니다.

+0

어떤 이벤트 당신이에 뭐하는거야? '나는 어디에서 왔는가? – mason

+0

코드에 대한 더 많은 것을 보여주세요 :) –

답변

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

    // .. 
} 
+0

좋아요, 그럼 어떻게 목록에있는 항목을 가져 왔고 클릭 한 위치에 객체를 그립니다. – user3349095

+0

글쎄, 나는 당신을 위해 프로그램을 작성하지는 않을 것이지만, 사용자가 클릭 한 곳에서 객체를 그리는 방법을 이미 알고 있다고 말했고, 'foreach' 루프를 사용하여 당신이 저장 한 모든 포인트를 거칠 수있다. 'pts' list :'foreach (pts에있는 var pt) {/ * pt * /}에서 객체 그리기 ' – Blorgbeard

+0

정말 고마워요. 완벽하게 작동합니다. – user3349095

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 
} 

} 
관련 문제