1

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

Panel1.Invalidate();

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

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

Graphics gfx = e.CreateGraphics()

对于线条,有一个单独的函数,在按钮单击时调用,我使用了:

Graphics gfx = Panel1.CreateGraphics();

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

Panel1.invalidate();

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

4

3 回答 3

4

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

Panel1.Invalidate();

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

于 2012-07-12T07:00:17.950 回答
2

您是否将积分保存在某种集合中并在Paint活动中绘制它们?

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

于 2012-07-08T10:34:08.400 回答
0

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

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

于 2012-07-09T18:17:26.410 回答