我在表格上画了一些东西
但是在最小化并恢复表单后,表单会被清除。问题是什么?
这段代码错了:( JIT说:)
private void Form1_Paint(object sender, PaintEventArgs e)
{
grForm = e.Graphics;
}
因为grForm的限幅小于零或太大。
答案 0 :(得分:1)
您无法存储您在Paint事件中获得的e.Graphics对象。它仅在Paint事件运行时有效,在此之后立即处理。使用表单的CreateGraphics()方法也不起作用,只要表单需要重新绘制就会消失。例如,当您最小化并恢复它时。
您必须使用表单的Invalidate()方法强制Paint事件再次运行。然后绘制需要绘制的内容。如果您希望绘图是持久的,那么您必须绘制一个位图。在Paint事件中使用e.Graphics.DrawImage()来绘制位图。这不是最好的方法,只要在必要时重绘是最好的。