在两个按钮组件之间画一条线

时间:2013-08-12 08:39:56

标签: c# graphics controls

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

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

            }
        }
    }

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

http://puu.sh/401hD.png

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

感谢。

1 个答案:

答案 0 :(得分:0)

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