0

我正在使用带有图标视图的虚拟列表视图来显示硬盘中文件夹中的许多图像。所有的图像都存储在 CImageList 中。可以使用滚动条在 UI 中缩放图像大小。为了性能起见,在 NM_CUSTOMDRAW 通知到来时完成每个项目的绘制。

问题是当有很多图像时,应用程序占用的内存太多。并且图像的缩放不平滑。有什么方法可以减少内存使用,比如只在内存中保存正在查看的图像。

4

2 回答 2

0

解决方案是为您的列表视图启用虚拟模式。在这种模式下,列表视图控件本身不托管任何数据;它只知道它有多少行。所有数据均按需索取。这使您(应用程序)负责管理它显示的数据,但它也允许您一次仅将数据项的一个子集保留在内存中。

在 A 上设置的说明CListCtrlMSDN 上

于 2013-08-08T10:12:35.960 回答
0

我发现使用 CreateBitmap() 创建 HBitmap 解决了我的内存问题。

最初我使用 CreateDIBitmap() 函数来创建 HBitmap。这存储了太多数据。后来我使用 CreateBitmap() 在内存中创建我的位图。这也将数据存储在内存中,但可以忽略不计。

于 2015-09-24T06:55:37.187 回答