WPF引入了統一資源標識Uri(Unified Resource Identifier)來標識和訪問資源。其中較為常見的情況是用Uri加載圖像。
Uri表達式的一般形式為:協議+授權+路徑
協議:pack://
授權:有兩種。一種用於訪問編譯時已經知道的文件,用application:///。一種用於訪問編譯時不知道、運行時才知道的文件,用siteoforigin:///。在這里加載圖片時,我們選用前者,即application:///,但是書寫時候,我們一般用逗號代替斜杠,也就是改寫作application:,,,。
路徑:分為絕對路徑和相對路徑。這里我們選用相對路徑,普適性更強。
下面在講講裝載圖片的兩種方式,一種用XAML引用資源,一種用代碼引用資源。
用XAML引用資源: <Image Source="pack://application:,,,/images/my.jpg"/>
用代碼引用資源: Image img; img.Source=new BitmapImage(new Uri("pack://application:,,,/images/my.jpg"),UriKind.Relative);
1 ImageBrush IB=new ImageBrush(); 2 //IB.ImageSource = new BitmapImage(new Uri("pack://application:,,,/images/button_bg.png")); 也可以 3 IB.ImageSource = new BitmapImage(new Uri("pack://application:,,,/PMClient;component/images/button_bg.png")); 4 Item.Background = IB;
其中PMClient是我自己的程序集
但是使用下面的簡寫形式則會報錯:找不到D:/images/button_bg.png,也就是說wpf不會自動加上pack://application:,,,
IB.ImageSource = new BitmapImage(new Uri("/images/button_bg.png",UriKind.Relative));
來自於
http://www.cnblogs.com/ErinCodeMM/archive/2011/04/07/2008819.html