delphi – 在多个应用程序之间共享图像的最佳方式

前端之家收集整理的这篇文章主要介绍了delphi – 在多个应用程序之间共享图像的最佳方式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个由几个编译的Delphi应用程序(超过20个exe和dll)组成的项目,我将需要共享60个图像(16×16,24×24,32×32,…)。

我已经有两种不同的方式在所有应用程序之间共享图像,但我不知道哪个更好:

想法1:

创建一个资源唯一的DLL项目,其中包含一个包含所有图像的.res文件的资源链接引用。每个应用程序将反过来加载dll,并根据需要将其所需的图像读入TImageList或TImage。

优点:允许将存储库中的图像保留为原始格式。

缺点:我将无法在设计时看到图像,因为它们只能在运行时加载。我还必须创建与图像相同数量的常量,或者使用与图像相同数量的值的集合,以便可以独立于资源文件名称引用每个图像。

想法2:

创建一个数据模块,该模块被编译为bpl并作为所有应用程序的运行时包装。我会将图像添加到几个TImageList(取决于图像大小)或TPngImageList(允许单个组件上的多种尺寸的图像)。

优点:我可以将此数据模块添加到我需要的所有应用程序中,并在设计时查看我可能需要使用的所有图像。

缺点:所有的图像将被加载到内存中,即使我只需要使用它们。当将图像添加/修改到TImageList / TPngImageList中时,我需要确保图像的顺序从不改变。所有图像将存储在单个.dfm中。

想法3 :(新)

看完其他应用程序谁也需要在编译的exe之间共享图像,我有另一个想法。
将所有共享图像作为普通png / ico文件保存在编译文件所在的子文件夹(例如数据)上。

优点:无需加载内存中的所有图像,我只需要获得所需的图像。如果图像的总数相当大(使用该方法的一个应用程序在数据子文件夹上具有1400个图像),这可能是特别重要的。

缺点:图像将可见/可供任何人使用。可能会在用户机器上占用更多的磁盘空间。

我想就这两个想法或任何其他关于如何更好地实现这一点的建议提出意见。

谢谢!

解决方法

我对选项1有很强的偏好。这样做可以使您的版本控制库中的图像保持原生格式。使用选项2,您可以将图像存储在.dfm文件中,我觉得这是非常不满意的。缺点是您失去了设计时间观看图像。我个人更喜欢做这个权衡。

在我的软件中,我有一个全局的图像列表,它在运行时通过从资源加载来填充,当然也可以在运行时分配图像索引。这带来的另一个好处是能够选择适合于字体缩放的图像大小。否则,您需要为16px图标,20px图标,24px图标,32px图标等提供单独的图像列表。

猜你在找的Delphi相关文章