C# WriteableBitmap在Silverlight 4中有新功能吗?

C# WriteableBitmap在Silverlight 4中有新功能吗?,c#,silverlight,writeablebitmap,C#,Silverlight,Writeablebitmap,如果有人能给我一个关于如何在流中使用它的例子?(不确定如何工作)我知道如何从URI创建BitmapImage,现在我需要将此图像转换为WriteableBitmap,但我得到一个类似以下内容的空异常错误: BitmapImage image = new BitmapImage(new Uri("http://www.example.com/example.png")); WriteableBitmap newImage = new WriteableBitmap(image); 简而言之:没有

如果有人能给我一个关于如何在流中使用它的例子?(不确定如何工作)我知道如何从
URI
创建
BitmapImage
,现在我需要将此图像转换为
WriteableBitmap
,但我得到一个类似以下内容的空异常错误:

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

简而言之:没有,Silverlight4没有新功能。尝试补偿缺失的功能

关于你真正的问题: 您应该向事件添加一个处理程序,以查看在下载映像时是否存在错误。您应该在事件处理程序中创建WriteableBitmap

var image = new BitmapImage(new Uri("http://www.example.com/example.png"));
WriteableBitmap newImage = null;
image.ImageOpened += (s, e) => newImage = new WriteableBitmap(image);
还请注意,允许跨域引用。有关详细信息,请参阅您应该将图像放入Web项目的ClientBin文件夹,并使用相对路径。

作为替代方案,您还可以将图像作为资源编译到程序集中并从那里加载它。有一个扩展方法可以使这个任务更容易一些。但请记住,这会增大装配尺寸,并且初始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文件或资源流的PNG图像填充WriteableBitmap吗?我想用网页上的PNG填充WriteableBitmap,我不在乎如何填充。但是我需要修改图像(在像素级,PNG的8位会使它更容易)使用资源流更好吗?我尝试了你的想法,现在我没有得到错误,但我也没有得到图像。。这意味着服务器不允许跨域请求?因此,我无法做到这一点?检查这两个跨域调用链接:这两个链接对我都不起作用。第一个代码块从未调用ImageOpened处理程序;第二个抛出一个异常。我用的是Silverlight 5。