1

我正在处理这个答案,试图将 ImageSource 转换为 BitmapImage。我在 WPF 画布上有一个 Image 控件,其源是位图,我想将此控件的源属性提取到一个变量(这将是一个 ImageSource)中,然后将其转换为 BitmapImage。

我的代码如下:

ImageSource source = MyImage.Source;
BitmapImage image = (BitmapImage) source;

它与链接答案中的代码基本相同,但我在第二行(我试图投射的地方)收到以下运行时错误:

无法将类型为“System.Windows.Media.Imaging.BitmapFrameDecode”的对象转换为类型“System.Windows.Media.Imaging.BitmapImage”。

我猜合乎逻辑的答案是这根本无法做到,但链接的答案被接受,有一个好评和四个令人沮丧的赞成票。我正在使用带有 .Net 4.5 的 Visual Studio 2012,我尝试针对 4.0、3.5 和 3.0 进行编译,并且看到了同样的问题。

我也在这里尝试了Ashura的建议,结果只是 null (就像每当我使用as关键字而不是将结果变量的值强制转换为 null 时一样)。

在我的 XAML 中,我的 Image 控件的源属性是一个*.bmp文件,我最终试图将它传递给 WriteableBitmap,但我需要有一个 BitmapImage 才能传递给 WriteableBitmap 的构造函数。

所以我的问题是,我做错了什么?如何从 ImageSource 转换为 BitmapImage?

4

1 回答 1

1

感谢评论者,您帮助我理解了问题。

我最终从 XAML 中取出Source属性,并在Window Loaded事件中设置以下内容,以确保我的图像控件的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 中执行此操作,则 Source 属性最终会默认为BitmapFrameDecode对象。

于 2012-12-19T11:07:40.090 回答