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

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

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

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

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

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

  • 从代码中设置自定义MarkupExtension
  • 如何从图像中生成突出颜色的调色板?
  • 如何禁用TextBlock?
  • 从ASP.NET转义JavaScript特殊字符
  • 如何从StackTrace中获取参数值
  • 忽略entity framework代码中的基类型也会忽略子类吗?
  • 在调用RunWorkerAsync之后但在函数退出之前取消订阅DoWork是否安全?
  • 只用USB端口编程LED
  • 如何在Linq-to-XML中按路径查找XML节点
  • 如何使用Autofixture创建和填充我的模拟类?
  • C#Custom Control未显示在工具箱中