2012-10-18 5 views
0

2 개의 직사각형을 연결하는 선을 달성하려면 어떻게해야합니까? 나는 나의 새로운 사각형을 배치되고 두 번째 새로운 포인트로DrawRectangle에서 선으로 두 점을 연결하는 방법은 무엇입니까?

if (listBox1.Items.Count >= 2) 
{ 
    e.Graphics.DrawLine(Pens.AliceBlue, new Point(/*??*/), new Point(n._x, n._y));      
} 

하지만 사전에 사각형의 요점을 파악하는 방법을 확실하지 않다 : 지금이 순간, 나는이 있습니다.

내 직사각형의 X 및 Y는과 같이 목록에 저장됩니다 그들이 그려로

public BindingList<Node> nodeList = new BindingList<Node>(); 

내 주요 목표는 될 수도 내 사각형의 각 라인을 추가합니다.

예 : 하나의 사각형을 내려 놓고 아무 것도 나타나지 않고 다른 하나를 아래로 놓고 두 개를 연결하는 선을 추가하고 세 번째를 추가하고 두 번째와 세 번째를 연결하는 선을 추가하십시오. 하지만 내가 갈 수 있다면 계속해서이 라인을 추가하는 방법을 시도해 볼 수 있습니다.

도움 주셔서 감사합니다.

void drawRectangles(Graphics g, List<Rectangle> list) { 
    if (list.Count == 0) { 
     return; 
    } 

    Rectangle lastRect = list[0]; 
    g.DrawRectangle(Pens.Black, lastRect); 

    // Indexing from the second rectangle -- the first one is already drawn! 
    for (int i = 1; i < list.Count; i++) { 
     Rectangle newRect = list[i]; 
     g.DrawLine(Pens.AliceBlue, new Point(lastRect.Right, lastRect.Bottom), new Point(newRect.Left, newRect.Top)); 
     g.DrawRectangle(Pens.Black, newRect); 
     lastRect = newRect; 
    } 
} 

당신이 연결되는 모서리를 결정하는 일부 스마트 코드를 삽입 할 수 있습니다,하지만 당신까지 :

답변

0

당신이 사각형의 목록이있는 경우, 당신은 라인이처럼 그들을 연결하는 그들을 그릴 수 있습니다.

+0

감사합니다, 작동! – Fan12121

0

이 코드 예제가 필요할 수도있는 다른 모든 사람들을위한 것입니다. for 루프는 0에서 시작해야합니다.

for (int i = 1; i < list.Count; i++) 
    { 
     //Code here 
    } 

은 다음과 같아야합니다

for (int i = **0**; i < list.Count; i++) 
    { 
     //Code here 
    } 
+0

제 대답은 직사각형을 루프 안쪽에 그려 넣는 것을 잊었습니다. 다시 한번 살펴 보겠습니다. 그리고 색인 생성은 0부터 시작하지 말아야합니다. 그렇지 않으면 목록 [0]이 그려집니다 * 두 번 *. 물론 두 번 그려도 위험하지는 않지만 수표를 두 번 지불하는 것은 *입니다. –

+0

어쩌면 내가 그때 그것을 구현하는 방식 일뿐입니다. 0부터 시작하지 않으면 첫 번째 사각형이 무시됩니다. 하지만 나는 두 번이나 모두 그리기에 대한 의미를 이해하고 그것에 대해 조사 할 것입니다. 다시 건배 – Fan12121

관련 문제