CreateGraphics和Paint事件的Graphics对象有什么区别?

有人可以解释作为pevent.Graphics传递的Graphics对象与通过调用this.CreateGraphics()返回的对象之间的区别吗?

每当引发Paint事件时,都会为您提供要绘制的Graphics对象。 这是作为pevent.Graphics传递的。 绘制到此Graphics对象是绘制元素的方式。

基本上永远不会使用CreateGraphics 。 它从窗口句柄即时创建一个新的Graphics对象。 您可以绘制它返回的Graphics对象,但是在下次引发Paint事件时,您绘制的任何内容都将被删除。

您可能想要使用CreateGraphics的唯一时间是特殊效果,例如在拖动期间显示实时反馈。 您希望在下次重新绘制元素时擦除它,因此您继续使用CreateGraphics来获取临时canvas以在拖动事件进行时绘制。

永远不会Paint事件处理程序方法中使用CreateGraphics 。 没有意义 – 你已经获得了一个Graphics对象!