如何在 c# 中清除面板的图形?



我在面板中使用过图形。在程序开始时,我在面板上画一些点,然后我想画连接这些点的线。问题是,当我按下选项卡按钮时,创建的图形会消失(但这种情况在程序中发生过一次)。下一个问题是我想清除面板我使用了以下代码来清除面板:

Panel1.Invalidate();

但这只会清除线条,而不会清除最初创建的点。有没有人有一个简单的解决方案,因为我不想重新创建面板。

技术细节:为了在面板中绘制初始点,使用panel1的油漆事件:

Graphics gfx = e.CreateGraphics()

对于行,有一个seprate函数在点击按钮时调用,我在其中使用了:

Graphics gfx = Panel1.CreateGraphics();

另一个用于清除面板的按钮有以下代码:

Panel1.invalidate();

但它只清除线条图形,而不是那些初始点。

我犯了一个错误,在panel1的绘制事件中创建了初始点。所以每次我打电话给

Panel1.Invalidate();

它回忆起绘制事件,这些点被重新绘制,而不是被清除。

是否将点保存在某种集合中并在Paint事件中绘制?

然后应该清空集合,然后调用Invalidate

面板在绘制事件内重新绘制。这意味着您必须在该方法中绘制所有内容,而不是直接访问图形上下文。

这解释了为什么每次重新绘制控件时,使用Graphics gfx = Panel1.CreateGraphics();绘制的所有内容都会丢失,因为在绘制事件期间,您只绘制初始点,而不是其他点。

相关内容

  • 没有找到相关文章

最新更新