我正在使用 C++ Builder XE7。每当表单调整大小时,我都需要重建一个 D2D 位图,我使用 CreateBitmap() 创建该位图。由于这会很快耗尽所有视频内存,因此我想在创建新位图之前销毁之前的位图。奇怪的是,我找不到任何关于如何销毁这个 _di_ID2D1Bitmap 的信息。我尝试了 Release() 方法,但这只是在 systobj.h 的第 291 行给了我一个 AV。
销毁 _di_ID2D1Bitmap 的正确方法是什么?
谢谢。
我正在使用 C++ Builder XE7。每当表单调整大小时,我都需要重建一个 D2D 位图,我使用 CreateBitmap() 创建该位图。由于这会很快耗尽所有视频内存,因此我想在创建新位图之前销毁之前的位图。奇怪的是,我找不到任何关于如何销毁这个 _di_ID2D1Bitmap 的信息。我尝试了 Release() 方法,但这只是在 systobj.h 的第 291 行给了我一个 AV。
销毁 _di_ID2D1Bitmap 的正确方法是什么?
谢谢。
_di_ID2D1Bitmap
是一个DelphiInterface
。Delphi 中的接口引用是指向 IMT 的指针。因此,_di_ID2D1Bitmap
类型变量是指针。
您不必手动释放它,因为有一个自动引用计数 - 即 - 当没有引用剩余时,它将自动释放。您可以检查IInterface._AddRef
和IInterface._Release
方法。
简而言之,如果你有一个指针只P
保存一个对你的ID2D1Bitmap
(ie _di_ID2D1Bitmap
) 的引用,当你将它传递给CreateBitmap()
它时,它将获得一个对新位图的引用,而旧的将成为 0 引用并将被释放。
以下是一些有用的读物: