如何将Jpg文件添加到BitMap.CreateFromFile的Delphi项目中?

时间:2013-11-18 15:04:01

标签: delphi bitmap msbuild

我正在使用Dephi RAD Studio XE5并创建一个需要在android,ios和win32上运行的Firemonkey项目。

我正在尝试使用BitMap.CreateFromFile()加载位图。我在项目中添加了“images”文件夹,并将图像存储在该文件夹中。我还将图像添加到项目中,以便它们显示在项目管理器视图中。

问题是当我尝试使用

TBitmap.CreateFromFile('images/myimage.jpg')

我在win32上的应用程序给出了以下错误消息:

无法打开文件“C:... \ Win32 \ Debug \ images \ myimage.jpg”

这表明构建过程没有将图像文件复制到Debug文件夹中。

如何说服构建过程将images文件夹复制到Debug文件夹?

编辑:

是的,我知道计算机不是读者。 :)尽管如此,当eclipse(例如)在其src目录中遇到一个文件时,它无法识别为源代码(如.jpg或.xml),它会很乐意将文件复制到bin目录中的相应位置。潜在的假设是开发人员知道他们在做什么。这就是我在这里寻找的所有内容。

我可以使用资源,但我不喜欢将图像编译成可执行文件的想法。最后,我想要更改图像,可能是应用程序从URL下载其他图像并将其缓存在images目录中。谁知道?将图像编译成可执行文件就像关闭选项框以便将来扩展。

2 个答案:

答案 0 :(得分:1)

构建过程不会将您的图像文件复制到输出文件夹。它无法读懂你的想法!

如果您希望在构建期间复制文件,则需要添加预构建或后构建事件来执行复制。该事件可能如下所示:

xcopy /iy "$(PROJECTDIR)\images" "$(OUTPUTDIR)"images

顺便说一句,我认为使用TBitmap.CreateFromFile('images/myimage.jpg')会遇到麻烦。该代码假定进程工作目录包含images目录。这可能是真的,但不能保证。如果您希望搜索相对于可执行文件目录的这些文件,您应该自己构建完整路径,从ExtractFilePath(ParamStr(0))开始。就个人而言,除非您有其他理由将这些资产部署为文件,否则将它们编译到您的程序中会更好。它使您的应用程序部署更简单。

答案 1 :(得分:1)

Delphi不会自动为您执行此操作。你有几个选择:

  • 手动将图像复制到输出文件夹。德尔福将在构建期间保持不受影响。
  • 将图像作为资源嵌入可执行文件中。然后,您无需在安装应用程序时提供图像。
  • 使用诸如Jenkins或FinalBuild之类的构建服务器为您进行构建。这些工具非常灵活,除了在正确的文件夹中复制资源文件外,还可以做更多的工作。