清除在 C# 窗口窗体中的图片框上绘制的线条



我有一个 c# windows 窗体程序,用户可以在其中用鼠标在图片框中的图像上画线。图形旨在通过pictureBox1_Paint方法创建。如何擦除绘制的线条并保持图像的完整性?

此处定义了默认图像:

public lineTest()
{
InitializeComponent();
defaultImage = pictureBox1.Image;
}    

画了这样的线:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
lines.Push(new Line { Start = e.Location });
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (lines.Count > 0 && e.Button == System.Windows.Forms.MouseButtons.Left)
{
lines.Peek().End = e.Location;
pictureBox1.Invalidate();
}
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
foreach (var line in lines)
{
Pen magenta = new Pen(Color.Magenta, 5);
e.Graphics.DrawLine(magenta, line.Start, line.End);
}
}

并尝试使用以下内容擦除行:

private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Image = defaultImage;
pictureBox1.Invalidate();
}

似乎什么也没发生。

每次使控件失效时都会调用 Paint,以便每次都重新绘制线条。在button1_Click事件处理程序中添加以下行:

lines.Clear();

在您致电pictureBox1.Invalidate();之前

这将阻止在油漆事件下一次触发时重新绘制线条。

相关内容

  • 没有找到相关文章

最新更新