我正在this answer工作,试图将ImageSource转换为BitmapImage。我在WPF画布上有一个图像控件,其源是位图,我希望将该控件的源属性提取为变量(将是ImageSource),然后将其转换为BitmapImage。
我的代码如下:
ImageSource source = MyImage.Source;
BitmapImage image = (BitmapImage) source;
它基本上与链接答案中的代码相同,但在第二行(我试图转换的地方)得到了以下运行时错误:
无法将'System.Windows.Media.Imaging.BitmapFrameDecode‘类型的对象转换为“System.Windows.Media.Imaging.BitmapImage”。
合乎逻辑的答案是,这是根本无法做到的,但答案链接被接受,有一个有利的意见和四个向上,这是令人沮丧的。我正在使用Visual 2012与.Net 4.5,我试图编译针对4.0,3.5和3.0,并看到了同样的问题。
我还尝试了Ashura的建议here,结果只是null (就像每当我使用as关键字而不是强制转换结果变量为null的时候一样)。
在我的XAML中,我的图像控件的源属性是一个*.bmp文件,我最终试图将它发送到WriteableBitmap,但是我需要有一个BitmapImage才能传递给WriteableBitmap的构造函数。
所以我的问题是,我做错了什么?如何将ImageSource转换为BitmapImage?
发布于 2012-12-19 11:07:40
谢谢大家的评论,你帮助我理解了这个问题。
最后,我从XAML中取出了Source属性,并在窗口加载的事件中设置了下面的内容,以确保图像控件的Source属性确实是BitmapImage:
private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
var image = new BitmapImage(new Uri("sample.bmp", UriKind.Relative));
MyImage.Source = image;
}
如果在XAML中执行此操作,源属性在默认情况下将成为BitmapFrameDecode对象。
https://stackoverflow.com/questions/13950499
复制相似问题