1

我在面板中有一个仅用于调整的绘制栅格。在这个栅格上,用户可以建立简单的 circuritys。我添加了一些功能,以便用户可以调整连接。问题是超出的一切都被粉饰了。有没有可能做这样的事情?我添加了 2 个屏幕截图,以便更清楚我的意思:

http://www.pic-upload.de/gal-337018/f5lsv1/1.html

代码:

private void UserMovesButton(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
        if (FirstFinished != 0)
        {
            dummy.Color = MainPanel.BackColor;
            Start = connectionButtons[ActualIndex - 1].Location;
            drawline();
            Start = connectionButtons[ActualIndex + 1].Location;
            drawline();
        }
        dummy.Color = Color.Black;
        Control controlToMove = (Control)sender;
        controlToMove.BringToFront();
        controlToMove.Location = new Point(controlToMove.Location.X + e.Location.X - 10,
            controlToMove.Location.Y + e.Location.Y - 10);
        {
            Start = connectionButtons[ActualIndex - 1].Location;
            Stop.X = controlToMove.Location.X + e.Location.X - 10;
            Stop.Y = controlToMove.Location.Y + e.Location.Y - 10;
            FirstFinished = 1;
            drawline();
            Start = connectionButtons[ActualIndex + 1].Location;
            drawline();
            Thread.Sleep(10);
        }
    }
}

(Connectionbuttons 是一个包含按钮的列表)

我已经考虑过使用 z 轴,但 drawline 不支持这样的东西。

4

1 回答 1

2

不确定您的drawLine()方法是做什么的,但我假设您使用它来绘制UserControl. 那不是正确的做法。您应该从 a 派生UserControl,覆盖OnPaint()方法并在那里进行所有绘画(从最底部的对象开始)。为了确保OnPaint()在对数据结构进行更改后调用它,您Invalidate()可以Refresh()使用UserControl.

于 2013-03-05T12:00:19.973 回答