2009年9月4日 星期五

在C# Form中引用被封裝的資源檔(影像)

要把影像檔封裝到C# form的執行檔或函式庫裡面很容易
請參考在C#中的封裝資源檔
並請記得將建置動作(Build Action)設成內嵌資源(EmbeddedResource)
同時,依照放置位置的不同,引用方法也不同
我們將四張圖檔依照上面的方法分別放於四個位置
檔名位置
img.png直接置於該應用程式專案裡面
img_folder.png放在應用程式專案底下的folder內
img_dll.png直接置於參考的函式庫test_dll裡面
img_folder_dll.png放在參考的函式庫test_dll裡面的folder內

在C#裡面引用的話(i1-i4是PictureBox控制項物件)

/// get application assembly by file name
Assembly app = Assembly.LoadFrom("test_cs.exe");
Assembly dll = Assembly.LoadFrom("test_dll.dll");

/// image at project
i1.Image=Image.FromStream(
app.GetManifestResourceStream(
"test_cs.img.png"));

/// image in folder at project
i2.Image=Image.FromStream(
app.GetManifestResourceStream(
"test_cs.folder.img_folder.png"));

/// image at dll
i3.Image=Image.FromStream(
dll.GetManifestResourceStream(
"test_dll.img_dll.png"));

/// image in folder at dll
i4.Image=Image.FromStream(
dll.GetManifestResourceStream(
"test_dll.folder.img_folder_dll.png"));

注意,GetManifestResourceStream的參數字串
第一個部分不是檔名,而是命名空間(namespace)
命名空間.資料夾.檔名.附檔名

--
參考資料
Image Resources in WinForms and WPF
圖檔資源載入與不規則 Form 的製作

沒有留言:

張貼留言