silverlight學習之獲取照片的路徑


有時候我們要在邏輯代碼里面動態的改變某張圖片,可以通過改變圖片的來源達到(就是改變Image控件的source)。

1、從服務器端獲取路徑

加入有個silverlight項目,在服務器端有個Images文件夾(在**.web 項目的根目錄下),里面放着一些圖片,客戶端要通過wcf從服務器端獲取這些照片(其實這里是獲取路徑,或者說鏈接),獲取這些照片路徑的代碼如下:

先獲取服務器名稱,再獲取端口號(可能沒有),最后獲取應用程序的名稱,這三個名稱組成了基本路徑。要精確定位到某張圖片,還要加上圖片所在的文件夾(一般放在silverlight解決方案的 .web項目的根目錄下)——這里是image ,在加上圖片的名字,再加上后綴名

 1         [OperationContract]
2 public string GetPhotosPath(string name, out string picturePath)
3 {
4 //圖片路徑。images是 .web項目下放圖片的文件夾。name是要查找照片的名字
5 picturePath = GetBaseDirectory() + "images/"+ name + ".jpg";
6 return picturePath;
7 }
8
9 private string GetBaseDirectory()
10 {
11 // 服務器名稱
12 string serverName = HttpContext.Current.Request.ServerVariables["Server_Name"];
13
14 //端口號
15 string port = HttpContext.Current.Request.ServerVariables["SERVER_PORT"];
16
17 // 應用服務名稱
18 string applicationName = HttpContext.Current.Request.ApplicationPath;
19
20 string path = "http://" + serverName + (port.Length > 0 ? ":" + port : string.Empty) + applicationName;
21 return path;
22 }

 

 2、在客戶端改變照片源

代碼如下,e.Result是返回的照片路徑。

有時候不需要從服務器端獲取,可以直接從客戶端獲取另一張圖片,獲取路徑方法:"Image/" + name + ".jpg" ,

假設 照片放在客戶端項目的image(在客戶端項目的根目錄下)文件夾里, 后綴名可以是其他格式,name表示照片名字。


客戶端訪問代碼如下:

 1         void client_GetPhotosPathCompleted(object sender, ServiceRefEmpInfo.GetPhotosPathCompletedEventArgs e)
2 {
3 string imageURL = e.Result;
4
5 //如果返回的照片路徑有誤,則顯示出錯提示
6 if (string.IsNullOrEmpty(imageURL))
7 {
8 imageURL = @"Images/falsePhotos.jpg";// 相對路徑格式
9
10 }
11
12 Uri uri = new Uri(imageURL, UriKind.RelativeOrAbsolute);
13 BitmapImage image = new BitmapImage(uri);
14 ((MainPage)App.Current.RootVisual).imageEmp.Source = image;
15
16 // ((MainPage)App.Current.RootVisual).imageEmp.Source = new BitmapImage(new Uri(imageURL, UriKind.RelativeOrAbsolute));
17
18 }

 

獲取到照片的路徑了,如何改變照片源呢?

1、新建一個 Uri 對象 :Uri uri = new Uri(imageURL, UriKind.RelativeOrAbsolute);

imageURL是照片的路徑,UriKind.RelativeOrAbsolute表示imageURL是絕對路徑還是相對路徑。

如果是 new Uri(imageURL) 則表示imageURL是以絕對路徑

2、用剛才新建的Uri對象的實例作為參數建立一個BitmapImage 對象:BitmapImage image = new BitmapImage(uri);

3、把新的BitmapImage 實例作為照片源賦給 Image :
((MainPage)App.Current.RootVisual).imageEmp.Source = image;

 ((MainPage)App.Current.RootVisual).imageEmp表示Image控件的名字

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM