每个 Windows 控件都可以拥有一个 paint 事件处理程序和一个表示此控件是绘图画布的 Graphics 对象。这意味着我们可以使用一个按钮或一个列表框作为绘图画布。
如果在菜单或按钮的 Click 事件处理程序中绘制图形对象,则必须最后调用 this.Invalidate() 方法。如果不调用,窗体将不会重新绘制自身,但是如果我们在窗体的 OnPaint 或 paint 事件处理程序中编写
一些代码,则不需要使窗体无效。
释放图形对象
如果一个 Graphics 对象是通过 CreateGraphics 方法或其他 CreateFrom 方法创建的,则必须释放此对对象,即手动调用 g.Dispose() 方法 。
如果我们在 paint 事件中或从 PaintEventArgs.Graphics 属性的 OnPaint 方法使用 Graphics 对象,则不需要释放此对象。
关于 Pen、Brush 等,如果将频繁地重新绘制窗体,则将这些变量定义为全局变量可以提高性能,因为在每一次重新绘制时都不需要再重新创建这些对象上浪费时间,但另一方面,定义全局变量将占用更多的内存资源。
标签:处理程序,对象,绘制,性能,paint,窗体,Graphics,GDI,优化 From: https://www.cnblogs.com/friend/p/18015265