2011-04-27 69 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」)。