簡而言之:不,在Silverlight 4中沒有新功能。WriteableBitmapEx試圖彌補缺失的功能。
關於您的實際問題: 您應該爲BitmapImage.ImageFailed事件添加處理程序,以查看是否在下載圖像時發生錯誤。你應該在ImageOpened事件處理程序中創建WriteableBitmap。
var image = new BitmapImage(new Uri("http://www.example.com/example.png"));
WriteableBitmap newImage = null;
image.ImageOpened += (s, e) => newImage = new WriteableBitmap(image);
請注意,跨域引用是允許的。有關詳細信息,請參見MSDN page。 您應該將圖像放入Web Project的ClientBin文件夾中,並使用相對路徑。
作爲一種替代方法,您也可以將圖像編譯爲資源並從中加載它。 WriteableBitmapEx有一個擴展方法來使這個任務變得更容易一些。但請記住,這會使組件規模增大,並且初始XAP加載時間將增加。
// Load an image from the calling Assembly's resources only by passing the relative path
var writeableBmp = new WriteableBitmap(0, 0).FromResource("example.png");
要從Web文件或資源流中填充WriteableBitmap和PNG圖像嗎? – 2010-08-04 07:36:30
我在我想用來填充WriteableBitmap的網頁上有一個PNG,我不在乎如何。但是我需要修改圖像(在像素級別,PNG的8位會使它更容易)使用資源流更好嗎? – david 2010-08-04 13:56:42
我剛編輯答案。 – 2010-08-05 08:46:08