在面板的 Paint 事件中,我有一个代码,它应该在 2 点之间画一条蓝线。
private void panel1_Paint(object sender, PaintEventArgs e)
{
panel1.AllowDrop = true;
listBox1.AllowDrop = true;
if (!s.IsEmpty && !f.IsEmpty)
{
e.Graphics.DrawLine(new Pen(Color.Blue, 5f), f, s);
s = Point.Empty;
f = Point.Empty;
}
}
我在 SetPoint 方法中使面板无效:
void setPoint(Point p)
{
if (f.IsEmpty)
f = p;
else
{
s = p;
panel1.Invalidate();
}
}
这是通过单击按钮触发的。它会画一条线,但问题是,当一条线已经存在时。它会覆盖它。我以为问题出在Invalidate
. 但我不知道如何解决它,因为Refresh()
或Update()
不起作用。
我做错了什么?