所以我试图找到一种在我点击的两个按钮之间绘制直线的方法(有多个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);
}
}
}
}
现在这样可行,但显然它是在我的表单画布上绘制的,它隐藏在我表单上的所有按钮后面。这是布局的样子:
无论如何我可以解决这个问题吗?
感谢。
答案 0 :(得分:0)
每个按钮都知道它在父级上的相对位置,每个按钮都可以处理其Paint
事件。如果你将线条以线方程的形式存储在某个集合中,该线方程通过两个点(x2-x1)(y-y1)=(y2-y1)(x-x1),你将能够在按钮Paint
处理程序中迭代它们并计算线是否穿过按钮的边缘。每个按钮应该有自己的边缘方程,相对于它的父坐标。