如果有人可以给我一个关于如何使用它的例子,有一个流? (不知道它是如何工作的)我知道如何从BitmapImage
创建URI
现在我需要将此图像转换为WriteableBitmap
,但我得到一个null异常错误,例如这样:
BitmapImage image = new BitmapImage(new Uri("http://www.example.com/example.png"));
WriteableBitmap newImage = new WriteableBitmap(image);
答案 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");