2011-04-27 92 views
0

我有一个WPF应用程序,我将图像作为资源添加到项目中(而不是从项目设置,例如第二个答案是否如here),因此它们位于文件夹下。我在XAML中使用它们像这样:如何将WPF引用图像添加为图像资源?

<Image Width="32" Height="32" Source="/Images/Effect.png" /> 

当我建立这个应用程序,只依赖DLL和应用程序本身被放入Debug/Release文件夹。驻留在项目中的图标以及实际的文件夹和文件位于项目文件夹内。那些不被复制到Debug/Release

我能够从任何地方运行此应用程序,并且图像工作,所以它必须将相对路径转换为硬编码路径?

如果是这样的话,我该如何能够将这些图像文件分发给其他机器?

我希望能够在参考和磁盘上始终拥有与应用程序相关的图像。

这是最好的方式还是有更好的方法?最后,我想轻松地将这些图像和应用程序分发给其他机器。

+0

不是图像直接编译进二进制文件吗? – BoltClock 2011-04-27 17:55:37

+0

它呢?我怎样才能验证这一点?你可能是对的,我重命名了Images文件夹,应用程序仍然工作。但是,如果图像编译成exe文件,那么我为什么会遇到这个问题? http://stackoverflow.com/questions/5807310/images-in-a-wpf-window-throw-exception-when-launched-via-reflection/5807363 – 2011-04-27 17:57:53

回答

3

图像以资源的形式被编译到程序集中。它们不是从它们在磁盘上的原始位置引用的。

当您指定Image.Source这样的值时,WPF会在当前程序集中查找相应的图像。您也可以引用驻留在引用程序集中的图像(以及其他资源)。 Here是关于WPF中资源URI格式的一些详细解释(称为“Pack URI”)。