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