GDI + Region,Matrix和GraphicsPath处理

时间:2011-05-30 10:56:30

标签: c# gdi+ dispose

我注意到Matrix,GraphicsPath和Region类实现了IDisposable。根据我的理解,如果一个类实现了这个接口,那么调用Dispose是一个要求,但我不明白这些类实现它的原因。这些类使用哪些系统资源来释放它们。在我的项目中,我有许多需要绘制的自定义形状,我使用这些类来存储这些对象的变换和几何信息,我会将它们用于与绘图无关的事情(如命中测试和对象排列管理) ),但似乎我不能这样做,因为他们使用资源,并且拥有一堆这些对象可能会降低整个系统的速度。有人会对此发表评论吗?也许我的假设是错的,这些对象毕竟不需要处理?

2 个答案:

答案 0 :(得分:2)

使用Reflector或ILSpy等工具,您可以自己研究处理方法。我检查了Matrix情况,它确实在Dispose(bool)方法中发布了一些原生引用。

答案 1 :(得分:1)

GDI +使用非托管资源,通过调用dispose释放这些资源并可以由系统重用。通过不调用dispose,您将锁定内存,直到GC处理它。