如何将按钮与基于图形的线条链接

本文关键字:图形 链接 按钮 于图形 | 更新日期: 2023-09-27 18:33:25

我的表单中有一个"按钮创建者"(创建我自己的自定义按钮),我需要在表单中创建一些按钮后,单击2个随机按钮进行连接,然后用简单的线条(可以是System.Drawing.Pen)。我应该使用某种图逻辑连接来做到这一点。但我不知道我应该怎么做。有什么代码建议吗?谢谢

如何将按钮与基于图形的线条链接

下面是

一个示例:

// two variables we will need:
Button lastBtn = null;
List<Tuple<Button, Button>> buttons = new List<Tuple<Button, Button>>();
void commonButton_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    if (btn == null) return;
    if (lastBtn == null) { lastBtn = btn; return; }
    else if (btn == lastBtn) { lastBtn = null; return; }
    else { buttons.Add(new Tuple<Button, Button>(lastBtn, btn)); lastBtn = null; }
    Invalidate();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
    foreach ( Tuple<Button, Button> t in buttons)
    {
        e.Graphics.DrawLine(Pens.RoyalBlue, t.Item1.Location, t.Item2.Location);
    }
}

创建按钮时,将每个按钮与公共单击事件挂钩:

yourButtonClass btn = new yourButtonClass()..
..
btn.Click += commonButton_Click;

这总是从左上角绘制线条。使用中间代替或在边缘上的智能定位,如果留给您,则与另一个按钮最接近。在后一种情况下,如果需要,您还可以在笔中添加开始和端盖。