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

时间:2014-08-14 06:49:57

标签: c# winforms graphics gdi+

有人可以解释传递为Graphics的{​​{1}}对象与通过pevent.Graphics调用返回的对象之间的差异吗?

1 个答案:

答案 0 :(得分:5)

每当引发Paint事件时,您都会获得一个Graphics对象来绘制。这将作为pevent.Graphics传递。绘制到这个Graphics对象是你如何绘制元素。

基本上不应该使用

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

您唯一可能想要使用CreateGraphics的是特殊效果,例如在拖动过程中显示实时反馈。您想要在下次重新绘制元素时将其删除,因此您继续使用CreateGraphics来获取临时画布以在拖动事件进行时绘制。< / p>

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