我使用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
会保留已被破坏的图像列表的句柄。