2012-10-18 66 views
0

如何實現將兩個矩形連接在一起的線?目前,我有這樣的:如何用一條線連接DrawRectangle中的兩個點?

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

隨着第二個新的點是,我把我的新的Rectangle,但我不知道怎麼去矩形點提前。

我的矩形的X和Y被存儲在一個列表,像這樣:

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

我的主要目標就行太添加到我的每一個矩形的,因爲他們被吸引。

例如:將一個矩形放下,沒有任何反應,放置另一個矩形,添加一條連接兩條線的線,添加第三條,添加一條連接第二條和第三條的線。但是如果我能得到一個,我可以嘗試解決如何不斷添加這些線。

感謝您的幫助!

回答

0

如果你有矩形的列表,你可以用線這樣的連接它們吸引他們:

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

謝謝你,它的工作原理! – 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

也許這只是我和我實施它的方式。如果我不從零開始,第一個矩形會被忽略。但我明白你的意思是兩次繪畫,並會研究它。再次歡呼 – Fan12121

相關問題