2012-05-01 62 views
0

C#文件資源導入圖像 - 從文件資源在不同的程序集加載圖像C# - 從不同的裝配

我有存儲在一個名爲SomeProject項目,並在同一顯示使用XAML不同時間PNG圖像文件項目。在不同的程序集中,我現在希望訪問相同的圖像。以前我只是簡單地指定一個相對路徑來實際運行正常的文件。但是,當我構建版本安裝程序時,圖像文件將打包到SomeProject.DLL中。

有沒有簡單的方法可以從另一個程序集訪問PNG文件,而不需要簡單地將文件複製到第二個項目?我雖然可能使用'pack://'但我沒有多少運氣。

// SomeOtherProject.SomeClass.cs ... 

Image logo = new Image(); 
BitmapImage logoSource = new BitmapImage(); 
eChamSource.BeginInit(); 

// Following line works fine is Visual Studio, but obviously not after installation 
// logoSource.UriSource = new Uri(@"..\SomeProject\Resources\Images\logo.png", UriKind.Relative); 

logoSource.UriSource = new Uri("pack://application:,,,/SomeProject;component/Resources/Images/logo.png"); 
logoSource.EndInit(); 

logo.Width = 100; logo.Height = 100; 
logo.Source = logoSource; 

任何建議都會很好。

回答

1

如果您想要使用的圖像爲Content的圖像位於another assembly,則必須將它們的圖像編號爲copy設置爲main projects directory

你可以使用一個構建事件要做到這一點:

包含 images -> Properties -> Buil Events ->編輯生成後,以圖像複製到 main project directory

右鍵單擊項目。

然後你如果你需要它的子文件夾

pack://application:,,,/Subfolder/ContentFile.xaml

看一看使用它作爲

pack://application:,,,/ContentFile.xaml

(OR)

這更hfor形成http://msdn.microsoft.com/en-us/library/aa970069.aspx

+0

謝謝你的編碼器,那就是我正在尋找的 – JamesPD

+0

@ JamesPD--非常歡迎。很高興它爲你提供了幫助。 – coder

1

嘗試作爲遵循加載其他組件:

Application.LoadComponent(new Uri(@"AnotherAssembly;;;component\AnotherResourceFilePath/logo.png", UriKind.Relative))); 

LoadComponent函數返回一個對象。它取決於你將其轉換爲適當的類型。