0

如何实现一条将两个矩形连接在一起的线?目前,我有这个:

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

我的主要目标是在绘制每个矩形时也为它们添加一条线。

例如:将一个矩形向下放置,没有任何反应,将另一个向下放置,添加一条连接两者的线,添加第三个,添加一条将第二个和第三个连接在一起的线。但是,如果我能做到这一点,我可以尝试找出如何连续添加这些行。

谢谢你的帮助!

4

2 回答 2

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

您可以插入一些智能代码来决定连接哪些角,但这取决于您。

于 2012-10-18T07:23:21.000 回答
0

仅适用于可能需要此代码示例的其他任何人。for 循环应该从 0 开始。所以;

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

应该:

for (int i = **0**; i < list.Count; i++)
   {
       //Code here
   }
于 2012-10-18T10:43:42.667 回答