0

所以我试图找到一种方法在我点击的两个按钮之间画一条直线(有多个源->目标线要绘制)。我目前正在使用此代码。

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        using (Graphics g = e.Graphics)
        {
            foreach (Connection c in connections)
            {
                Point pt1 = c.source.Location;
                Point pt2 = c.destination.Location;

                using (Pen p = new Pen(Brushes.Black))
                {
                    g.DrawLine(p, pt1, pt2);
                }

            }
        }
    }

现在这可行,但显然它是在我的表单画布上绘制的,它隐藏在我表单上的所有按钮后面。这是布局的样子:

在此处输入图像描述

无论如何我可以解决这个问题吗?

谢谢。

4

1 回答 1

0

每个按钮都知道它在父级上的相对位置,并且每个按钮都可以处理它的Paint事件。如果您以通过两个点(x2-x1)(y-y1)=(y2-y1)(x-x1)的线方程的形式将线条存储在某个集合中,您将能够在它们中迭代按钮Paint处理程序并计算线是否穿过按钮的边缘。每个按钮都应该有自己的边相对于其父坐标的方程。

于 2013-08-12T08:58:02.073 回答