gpt4 book ai didi

c# - 如何在简单的绘画应用程序中清除面板

转载 作者:行者123 更新时间:2023-11-30 21:14:43 24 4
gpt4 key购买 nike

我正在开发一个简单的 Windows 窗体绘制应用程序。我在清除面板时遇到问题。我用来绘制的代码是

private void panel1_Paint(object sender, PaintEventArgs e)
{
Graphics g = Graphics.FromImage(tempDraw);
Pen myPen = new Pen(foreColor, lineWidth);
g.DrawLine(myPen, x1, y1, x2, y2);
myPen.Width = 100;
myPen.Dispose();
e.Graphics.DrawImageUnscaled(tempDraw, 0, 0);
g.Dispose();
}

如何清除面板?

最佳答案

是否在 Panel 实例的绘制处理程序中绘制?如果不是,那么在面板上调用 Invalidate 就可以了。

但您可能会保留绘图项,因此要清除它们,您需要删除已绘制的内容,然后调用 Invalidate。您也可以使用 FillRect 用特定颜色填充面板,但这是一个肮脏的解决方法,不适合您的最终设计。

您还应该查看 CodeProject.com 以获取示例 like this one让您了解在创建这样的绘图应用程序时需要处理什么。

编辑:

根据编辑后的答案,您无法使用现有逻辑清除面板。您正在窗体的 Paint 处理程序中绘画,这将在需要重绘时随时发生。这意味着你应该改变你的方法。您需要 Paint 处理程序中的某种条件来决定它是否会绘制任何东西。这就是绘图对象持久化的用武之地。如果你想创建一个绘图程序,那么你必须处理面板对象上的鼠标向下、向上和移动事件,并将数据存储在点数组中。 (作为一种绘图的示例。)然后,如果 Points[] 不为空,则在您的 Paint 处理程序中绘制点。否则你什么都不画……最后变成一个空容器。然后,如果您需要清除绘图,您可以删除 Points 数组的内容并在面板上调用 Invalidate。这将清除持久化数据并重新绘制为空。

关于c# - 如何在简单的绘画应用程序中清除面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com