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

Ind*_*ana -4 c# graphics gdi+ winforms

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

Cod*_*ray 5

每当一个Paint事件被提出时,你都会得到一个Graphics可以绘制的对象.这是作为传递pevent.Graphics.绘制此Graphics对象是如何绘制元素.

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

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

你将永远不会使用CreateGraphics一个内部Paint事件处理方法.没有意义 - 你已经被赋予了一个Graphics对象!