我在面板中使用过grahics。在程序开始时,我在面板中绘制了一些点,之后我想绘制连接这些点的线。问题是当我按Tab键时,创建的图形消失(但这在程序中发生一次)。接下来的问题是我想清除我用以下代码清除面板的面板:
Panel1.Invalidate();
但这只会清除线条,但不会清除最初创建的线条。有没有人有一个简单的解决方案,因为我不想重新创建面板。
技术细节:要在面板中绘制初始点,使用panel1
的绘制事件:
Graphics gfx = e.CreateGraphics()
对于行,有一个seprate函数,在按钮点击时调用,我用过:
Graphics gfx = Panel1.CreateGraphics();
用于清除面板的另一个按钮具有以下代码:
Panel1.invalidate();
但它只清除线条图形,而不是那些初始点。
答案 0 :(得分:4)
我在panel1的paint事件中创建初始点时犯了一个错误。所以我每次打电话
Panel1.Invalidate();
它回忆起油漆事件和那些点被重新绘制而不是被清除。
答案 1 :(得分:2)
您是否将点数保存在某种集合中并在Paint
事件中绘制它们?
然后你应该清空集合,然后调用Invalidate
答案 2 :(得分:0)
在paint事件中重绘了该面板。这意味着您必须在此方法中绘制所有内容,而不是直接访问图形上下文。
这解释了为什么每次重绘控件时使用Graphics gfx = Panel1.CreateGraphics();
时绘制的所有内容都会丢失,因为在绘制事件期间,您只绘制了初始点,仅此而已。