在程序中會用到圖片,有兩種方法,一種是將圖片放在運行文件夾中,直接調用,另一種是將圖片放入資源文件中。
方法一,一般在.exe文件同級創建文件夾,如“ico”,然后把圖標放進去。在程序中代碼采用相對路徑調用。
這種方式的優點是,以后更換圖標比較方便,直接替換文件即可。
代碼略。
方法二,在一些小程序中,如我們不想程序帶有一系列除.exe以外的文件,可以采用導入資源文件中的形式。
導入資源文件,優點有安全、讀取調用較快(資源文件序列化存儲)、不會有額外的文件(嵌入到程序集中)。
做法:
1. 在程序集中添加資源文件(如果已有則不需添加)。
選則程序集,添加
選擇Visual C#項,“資源文件”
添加。
2. 雙擊打開我們剛新建的“Resource2.resx”,這里我們就可以添加資源了。
如圖所示
3. 這時,當我們上傳圖片的時候,程序會自動生成一個文件夾,這個文件夾放置的就是我們傳上去的圖片。
4.代碼調用
假如我們上傳了一個名叫“aaa.jpg”的圖片到資源,那么代碼里面就只需要這樣寫:
- Image image = Resource2.aaa;
這里需要解釋一下,為什么這么簡單呢,首先Resource2是一個類,它是在我們添加“系統資源文件”操作后自動創建的,aaa是它的類的一個靜態屬性,是當我們成功上傳一個圖片是自動添加的。所以我們直接寫Resource2.aaa就可以了。
下面貼出Resource2類的部分代碼,作參考了解。
- internal class Resource1 {
- //...
- /// <summary>
- /// 查找 System.Drawing.Bitmap 類型的本地化資源。
- /// </summary>
- internal static System.Drawing.Bitmap aaa
- {
- get
- {
- object obj = ResourceManager.GetObject("GdbConnection16", resourceCulture);
- return ((System.Drawing.Bitmap)(obj));
- }
- }
- //...
可以看到
第一,類和方法的修飾是internal,也就是只能在本程序集中調用。
第二,aaa是該類的一個靜態屬性,所以直接用類名調用。
第三,aaa的類型定義的Bitmap,所以我們的Image可以直接用它來賦值。
這些都是封裝好了的,我們只需要按照一定的方式導入,然后用代碼直接調用就OK了。