我在Panel中有一个绘制的栅格,仅用于调整。在此栅格上,用户可以构建简单的环境。我添加了一些功能,以便用户可以调整连接。问题是超越的一切都被涂上了。有没有可能做那样的事情? 我添加了两个截图,所以我的意思更清楚了:
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);
}
}
}
(连接按钮是一个包含按钮的列表)
我已经考虑过使用z轴,但是drawline不支持这样的东西。
答案 0 :(得分:2)
不确定drawLine()
方法的作用,但我假设您使用它来绘制UserControl
。这不是正确的方法。您应该从UserControl
派生,覆盖OnPaint()方法并在那里进行绘制(从最底层的对象开始)。要确保在更改数据结构后调用OnPaint()
,您可以使用Invalidate()
的{{1}}或Refresh()
方法。