【发布时间】:2015-04-20 21:51:22
【问题描述】:
我正在使用 C++ Builder XE7。每当表单调整大小时,我都需要重建一个 D2D 位图,我使用 CreateBitmap() 创建该位图。由于这会很快耗尽所有视频内存,因此我想在创建新位图之前销毁之前的位图。奇怪的是,我找不到任何关于如何销毁这个 _di_ID2D1Bitmap 的信息。我尝试了 Release() 方法,但这只是在 systobj.h 的第 291 行给了我一个 AV。
销毁 _di_ID2D1Bitmap 的正确方法是什么?
谢谢。
【问题讨论】:
-
如果 _di_ID2D1Bitmap 是
ID2D1Bitmap接口,只需删除对它的所有引用(例如mySavedBMPRef = null)。 -
谢谢@PeterKostov。就这么简单吗?我的困惑来自于我把它看成一个指针,我现在明白它不是。我假设不是取消它,而是将其替换为“指向”新位图也可以吗?
-
_di_ID2D1Bitmap是DelphiInterface。该类型的变量是指针。您不必手动释放它,因为有一个自动引用计数 - 即 - 当没有引用剩余时,它将自动释放。简而言之,如果您有一个指针P持有只有一个 对您的ID2D1Bitmap的引用,当您将它传递给CreateBitmap()时,它将获取新位图的引用,而旧位图将变为 0 个引用并将被释放。 -
酷,谢谢。不熟悉德尔福,所以不知道(也没有记录)。如果您将其发布为答案,我会给您适当的信用。
标签: bitmap direct2d c++builder-xe7