如何在C 中使用內嵌資源檔案

2021-04-21 01:25:36 字數 2091 閱讀 5601

如何在c#中使用內嵌資源檔案

簡介

在好多的c#和 .net的論壇中都會提到如何使用內嵌資源的話題,對大多一般的數專案來說,這也許更不就不是乙個問題.但是,對於一些複雜的專案,這也許就成了問題.本文會把論壇中的內容彙總一下,比起查詢論壇來,文章顯得更容易查詢和連線.

第一件清楚的事情

在vs.net中,有多種使用資源檔案的方法,最常用的方法是讓form來儲存它所使用的資源檔案,這個可以通過產生乙個.resx檔案來儲存form所用到的資源.本文不是討論這個話題,因為通常開發人員不會關心這個簡單的問題.

第二種方法是使用資源檔案,本文重點在這兒,包括如何在資源檔案中新增檔案,如何設定內嵌資源的」生成型別」.

名稱是如何規定的?

當你使用內嵌資源檔案時,通常要知道資源的名稱.實際上它可以像乙個檔名,但是通常會比檔名更複雜一點點.

命名一般包括三個部分:《預設的命名空間.>《擴充套件命命名空間.>《檔名》

上面的第一部分和最後的第三部分都好理解. 預設的命名空間就是專案的命名空間,檔名就是資源檔案的名稱.中間的這部分可能有些迷惑.

簡單的講,擴充套件命名空間就是專案中的目錄結構.如果你的資源檔案就在專案的根目錄下,擴充套件命名空間就不需要了,直接這樣寫就可以了. 《預設的命名空間.> 《檔名》. 但是如果你在專案中產生目錄結果的話,就要使用使用擴充套件命名空間了.比如你在專案的根目錄下產生了乙個images目錄,那麼資源檔案就要這樣來表示: 《預設的命名空間.> images.《檔名》. 如果你在images路徑下還有乙個目錄formgraphics,那麼資源檔案就要這樣表示: 《預設的命名空間.> images.formgraphics.《檔名》

我想大家可能已經發現了上面的規律,在**中你也可以這麼寫.當你在目錄下使用vs自動產生了類,它也是安裝這樣的方式來命名類的名稱. 《預設的命名空間.>《擴充套件命命名空間.>. 雖然你可以手工的修改**中的命名空間,但是有一點要記住,是不可以修改內嵌資源檔案的命名空間結構的.

如何得到資源

1、普通方法

普通的使用內嵌資源檔案的方法是使用assembly類的getmanifestresource方法.在第乙個演示程式中,我們會使用下面這兩個方法getmanifestresourcenames, getmanifestresourcestream

這個演示程式會列舉出乙個裝配件中的資源,可以把存選中的資源保到乙個檔案中.如果資源是乙個圖象,在程式中就可以顯示出來.如果你還沒有乙個內嵌資源的裝配件,第二個演示程式就是乙個含有資源的裝配件.

這是在listbox的 listbox's selectedindexchanged 事件中,如果出來資源

system.io.stream stream = loadedassembly.getmanifestresourcestream(

(string) resources.selecteditem);

system.drawing.image img = image.fromstream(stream);

上面的演示程式把乙個裝配件調入記憶體,在loadedassembly變數中儲存乙個assembly例項.也許在你的應用程式中,不需要呼叫其他裝配件的資源,你只是想能從你自己的程式中得到資源.

最簡單的方法是使用type類的assembly屬性來得到某乙個類的乙個例項,你可以用下面的方法來得到type,如果是乙個類,使用typeof(),如果是乙個類的例項變數,使用gettype().

2、另一種實現方法

getmanifestresourcestream有兩種過載方法,一種是從乙個資源檔案中來得到乙個stream物件, 另乙個中使用type和string. 第二個會幫助我們得到可以使用的資源.它會根據清單資源的範圍由指定型別的命名空間確定資源清單

第二個演示程式是利用上面說得第二個方法來實現的.

總結

當你理解了上面的內容後,對於vs.net內嵌資源的使用就是易於反掌了.唯一要注意的地方就是找出vs.net給你的資源檔案的名字.

delphi中使用資源檔案

資源檔案的原始檔是普通的文字檔案,副檔名是 rc。比如說test.rc.編寫乙個副檔名 rc的檔案,格式為資源名稱 資源型別 檔名稱,例如 2.編譯rc檔案為res資源檔案 注意 要把資源檔案test.rc和sqlite3.dll sea.bmp sea.ico放在同乙個資料夾中 利用delphi自...

如何使用資源檔案

昨天突發奇想,向寫乙個類似於msn 的自定義個性化窗體,今天在實踐的過程中,發現在實現資源檔案時就遇到了困難。在網上找了不少的資料,將怎麼新增資源檔案的很多,比如這個 就不錯,而且其中也註解了 注意 resourcemanager rm new resourcemanager res.my asse...

如何使用Resource資源檔案

為了能夠在displayattribute中重複使用同樣的名稱,將所有的顯示字串集中管理。1 displayattribute本身支援直接使用資源檔案。display resourcetype typeof resource2 name studentname resourcetype為資源檔名,表...