破坏 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 引用并被释放。

这里有一些有用的读物​​: