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

时间:2012-07-08 10:31:21

标签: c# graphics panel

我在面板中使用过grahics。在程序开始时,我在面板中绘制了一些点,之后我想绘制连接这些点的线。问题是当我按Tab键时,创建的图形消失(但这在程序中发生一次)。接下来的问题是我想清除我用以下代码清除面板的面板:

Panel1.Invalidate();

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

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

Graphics gfx = e.CreateGraphics()

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

Graphics gfx = Panel1.CreateGraphics();

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

Panel1.invalidate();

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

3 个答案:

答案 0 :(得分:4)

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

Panel1.Invalidate();

它回忆起油漆事件和那些点被重新绘制而不是被清除。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

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