2012-12-16 8 views
0

패널의 Paint 이벤트 내에서 2 포인트 사이에 파란색 선을 그어 야하는 코드가 있습니다. 버튼을 클릭하여 트리거C# 패널 라인 덮어 쓰기

 void setPoint(Point p) 
    { 
     if (f.IsEmpty) 
      f = p; 
     else 
     { 
      s = p; 
      panel1.Invalidate(); 
     } 


    } 

:

 private void panel1_Paint(object sender, PaintEventArgs e) 
    { 
     panel1.AllowDrop = true; 
     listBox1.AllowDrop = true; 
     if (!s.IsEmpty && !f.IsEmpty) 
     { 

      e.Graphics.DrawLine(new Pen(Color.Blue, 5f), f, s); 
      s = Point.Empty; 
      f = Point.Empty; 

     } 

    } 

은 임에 SetPoint 방식의 패널을 무효화. 줄을 그리지 만, 문제는입니다. 한 줄이 이미 있으면 문제가됩니다. 그것을 덮어 씁니다. 나는 문제가 Invalidate에 있다고 생각했다. 하지만 Refresh() 또는 Update()이 작동하지 않기 때문에 해결 방법을 모릅니다.
내가 잘못하고있는 것은 무엇입니까?

답변

1

일부 구조에 모든 포인트를 저장해야합니다. 페인트 방법에서 구조를 반복하고 모든 선을 그립니다.

페인트가 활성화되면 다시 한 번 모든 컨트롤이 다시 그려지고 이전에 있었던 것을 "기억할"수 없기 때문에 내부에 쓴 것만 수행하기 때문입니다.

+0

좋아요, 나는 벌써 이것을했습니다. 모든 것이 이제는 잘되고 있습니다. 감사. –