0

我正在使用 C++ Builder XE7。每当表单调整大小时,我都需要重建一个 D2D 位图,我使用 CreateBitmap() 创建该位图。由于这会很快耗尽所有视频内存,因此我想在创建新位图之前销毁之前的位图。奇怪的是,我找不到任何关于如何销毁这个 _di_ID2D1Bitmap 的信息。我尝试了 Release() 方法,但这只是在 systobj.h 的第 291 行给了我一个 AV。

销毁 _di_ID2D1Bitmap 的正确方法是什么?

谢谢。

4

1 回答 1

2

_di_ID2D1Bitmap是一个DelphiInterface。Delphi 中的接口引用是指向 IMT 的指针。因此,_di_ID2D1Bitmap类型变量是指针。

您不必手动释放它,因为有一个自动引用计数 - 即 - 当没有引用剩余时,它将自动释放。您可以检查IInterface._AddRefIInterface._Release方法。

简而言之,如果你有一个指针只P保存一个对你的ID2D1Bitmap(ie _di_ID2D1Bitmap) 的引用,当你将它传递给CreateBitmap()它时,它将获得一个对新位图的引用,而旧的将成为 0 引用并将被释放。

以下是一些有用的读物​​:

于 2015-02-20T09:38:42.513 回答