<-- IE錯誤修正 --> 從Resource、Content、stream、Bytes取得Image - RiS社群 | FileMaker 中小企業應用



快速發表主題
返回   RiS社群 | FileMaker 中小企業應用 > Microsoft (微軟) > 微軟RIA技術產品分類 > Silverlight (又稱銀光)

Silverlight (又稱銀光) 跨瀏覽器、跨平台外掛(插件),類似Flash Player,Silverlight展現微軟.NET新一代的網路多媒體互動應用能力。


FileMaker 教學 FileMaker 14 教學課程 FileMaker 教學
FileMaker 課程(僅接受公司/單位或1對1專屬教學

輕鬆學會FileMaker
帶你認識FileMaker

FileMaker俱樂部 加入FileMaker獲取官方資訊 FileMaker俱樂部
FileMaker俱樂部

回覆
 
LinkBack 主題工具 顯示模式
  #1 (permalink)  
舊 2011-02-14
進階會員
 
註冊日期: 2007-12-19
文章: 119
酷 從Resource、Content、stream、Bytes取得Image

最近在寫Silverlight,處裡一些與圖片有關的東西,會需要時常從Resource, Content等位置取得Image,然後填入Silverlight的Image物件,有時候則是透過WebClient取得stream,有時候則是取得一堆的bytes...總之呢,有各種不同的情境。

所幸整理了一下,
//從特定Path的Resource取得Image
public static System.Windows.Media.Imaging.BitmapImage GetImageFromResourcePath(string path)
{
return new System.Windows.Media.Imaging.BitmapImage(new Uri(path, UriKind.Relative));
}這邊要注意的是,UriKind務必是Relative,別設為Absolute。

如果要從Content中取得Image,則可參考底下的這段程式碼:
/// 取得content類型的資源
public static System.Windows.Media.Imaging.BitmapImage GetImageFromContentPath(string path)
{
//直接抓檔案版本
Uri fileUri = new Uri(path, UriKind.Relative);
StreamResourceInfo streamResourceInfo = Application.GetResourceStream(fileUri);
using (BinaryReader br = new BinaryReader(streamResourceInfo.Stream))
{
byte[] content = br.ReadBytes((int)br.BaseStream.Length);
return aRock.Phone.Images.ByteToImageSource(content);
}
}
其實概念上是一樣的,只是多了一段從Bytes轉ImageSource的部分,也剛好順便看一下從bytes抓取Image到BitmapImage的方法:
/// 取得byte型態的Image
public static BitmapImage ByteToImageSource(byte[] imageBytes)
{
BitmapImage im = new BitmapImage();
MemoryStream ms = new MemoryStream(imageBytes);
im.SetSource(ms);
return im;
}
底下這段Code則是從特定url取得Image
WebClient wc = new WebClient();
Uri url = new Uri("filename", UriKind.Absolute);
//取得資料後
wc.OpenReadCompleted += (ss,arg) => {
//把resource填入BitmapImage
BitmapImage bi = new BitmapImage();
bi.SetSource(arg.Result);
//把BitmapImage填入Image
img.Source = bi;
};
//非同步讀取遠端資料(ImagesBytes)
wc.OpenReadAsync(url);

這些都是從特定資料來源取得Image的方法,在WP7和Silverlight當中都挺好用...

BTW, 上面的程式碼我留了一些可簡化的空間,有興趣的朋友可以研究看看^^Click the image to open in full size.


本篇來源...

回覆時引用此篇文章
回覆

主題工具
顯示模式

發表文章規則
不允許您發表新主題
不允許您發表文章
不允許您上傳附件
不允許您編輯自已的文章

開啟 BB 代碼
關閉 HTML 程式碼
Trackbacks are 關閉
Pingbacks are 關閉
Refbacks are 開啟



所有時間均為 +8。現在的時間是 07:12 AM
Powered by vBulletin® 版本 3.7.2
版權所有 ©2000 - 2018,Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden
RiS 社群 ( 感謝正洋資訊顧問有限公司技術指導 ) - 使用3.7.2永久合法版權。
Ad Management by RedTyger



Content Relevant URLs by vBSEO 3.6.0 PL2