TImageList.ShareImages - 如何正确使用不必复制内容?

时间:2016-01-29 10:09:39

标签: delphi c++builder

我使用C ++ Builder,但问题与我相信的Delphi一样重要。

当我有两个TImageList个对象时,我想在两个图像列表中使用相同的图标,我可以复制内容:ImageList2.Assign(ImageList1) ;

但是,我注意到帮助中的TImageList.ShareImages表明我可以使用相同的内部列表,并节省资源复制!然而,由于我不确定如何才能完全实现这一点,因此记录不佳? 如何使ImageList2使用与ImageList1相同的内部列表? (我会设置ImageList2.ShareImages = true

1 个答案:

答案 0 :(得分:3)

当我阅读源代码时,你会这样做:

ImageList2->Handle = ImageList1->Handle;
ImageList2->ShareImages = true;

所有ShareImages控件都是图像列表句柄是否为列表所有者。在这种情况下,它由ImageList1拥有,而不是由ImageList2拥有。

这样做的结果是ImageList1必须生效ImageList2。否则,如果ImageList1首先被销毁,那么ImageList2将保留一个已被销毁的图像列表的句柄。