WriteableBitmap是否在Silverlight 4中具有新功能?

时间:2010-08-03 22:03:52

标签: c# silverlight writeablebitmap

如果有人可以给我一个关于如何使用它的例子,有一个流? (不知道它是如何工作的)我知道如何从BitmapImage创建URI现在我需要将此图像转换为WriteableBitmap,但我得到一个null异常错误,例如这样:

BitmapImage image = new BitmapImage(new Uri("http://www.example.com/example.png"));
WriteableBitmap newImage = new WriteableBitmap(image);

1 个答案:

答案 0 :(得分:4)

简而言之:不,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");