2

如果有人可以通过流给我一个如何使用它的例子?(不知道它是如何工作的)我知道如何创建 aBitmapImageURI现在我需要将此图像转换为 a WriteableBitmap,但我得到一个空异常错误,如下所示:

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

1 回答 1

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 页面您应该将图像放入 Web 项目的 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");
于 2010-08-04T07:19:12.980 回答