简而言之:不,在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