TImageList.ShareImages - 如何正确使用而不必复制内容?
TImageList.ShareImages - How to use exactly to not have to copy the content?
我使用 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
将保留已被销毁的图像列表的句柄。
我使用 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
将保留已被销毁的图像列表的句柄。