我发现Delphi没有很好地管理图像"源"文件和我的项目中的图像组件之间的链接(这里是D2006,但我认为它适用于所有版本)。
假设我的项目中有各种静态图像-背景、工具栏按钮符号、各种养眼的东西等等。我有一个相应的PNG/BMP等文件集合,这些文件是我来源、刮取或创建的,并且在设计时已加载到图像组件中。
一个问题是,似乎没有一种自动的方法可以在三个月后找到用于加载图像组件的源图像文件。当您需要编辑一个或多个图像时,这将成为一个更大的问题。
因此,我真正喜欢的是在项目构建中包含图像源文件的某种方式。也就是说,当我进行构建时,所有的图像组件都会首先从源中重新加载。目前,当我用PhotoShop或类似软件修改我的一些图像时,我面临着一个漫长且容易出错的过程,要将修改后的图像重新加载到它们各自的图像容器中。
创建一个所有图像都绑定到其中的资源,并在启动时添加加载图像组件的代码,这是一种可行的方法吗?其他人有这个问题吗?你是如何处理的?
没有一个标准组件支持您的要求。然而,Thany的TPngImageList组件确实支持将用户定义的字符串与列表中的每个图像相关联的功能。
否则,为了知道哪个文件属于哪个映像,我建议在编译时使用.rc文件将外部映像文件编译到应用程序的资源中,然后可以在运行时而不是设计时将映像资源动态加载到组件中。这样,您就可以随心所欲地管理图像文件。当您更改文件时,它将在下次编译时自动链接到应用程序中。
您可以在运行时加载相同的映像,并在版本控制中添加这些映像以便于维护。还有Lazarus的命令行工具(我想你可能也会在Delphi中找到类似的工具),可以将文件放入应用程序稍后使用的资源中。
我从ico文件加载图像,填充图像列表,然后在各种节点的虚拟字符串树中使用它。易于更改ico文件。/Mikael