我使用C ++ Builder,但是我认为这个问题与Delphi同样重要。

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

但是,我注意到“帮助”中的TImageList.ShareImages提示我可以使用相同的内部列表,并节省复制资源!但是记录不佳,因为我不确定如何才能做到这一点?
如何使ImageList2使用与ImageList1相同的内部列表? (我会设置ImageList2.ShareImages = true

最佳答案

当我阅读源代码时,您是这样进行的:

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


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

这样的结果是ImageList1必须退出实时ImageList2。否则,如果ImageList1首先被破坏,则ImageList2会保留已被破坏的图像列表的句柄。

10-08 07:15