图形和绘画事件

时间:2011-03-29 18:59:55

标签: c# winforms

我在表格上画了一些东西

但是在最小化并恢复表单后,表单会被清除。问题是什么?

这段代码错了:( JIT说:)

private void Form1_Paint(object sender, PaintEventArgs e)
{
    grForm = e.Graphics;
}

因为grForm的限幅小于零或太大。

1 个答案:

答案 0 :(得分:1)

您无法存储您在Paint事件中获得的e.Graphics对象。它仅在Paint事件运行时有效,在此之后立即处理。使用表单的CreateGraphics()方法也不起作用,只要表单需要重新绘制就会消失。例如,当您最小化并恢复它时。

您必须使用表单的Invalidate()方法强制Paint事件再次运行。然后绘制需要绘制的内容。如果您希望绘图是持久的,那么您必须绘制一个位图。在Paint事件中使用e.Graphics.DrawImage()来绘制位图。这不是最好的方法,只要在必要时重绘是最好的。