将ImageSource转换为BitmapImage-WPF

将ImageSource转换为BitmapImage-WPF,wpf,bitmapimage,Wpf,Bitmapimage,我正在使用一个类库来生成一个大于3000x3750像素的大型图像源。我想将此ImageSource转换为BitmapImage,这样我就可以利用DecodePixelWidth或DecodePixelHeight,而不是每次生成此图像时都调整其大小 我需要先为用户显示此图像,大多数用户的屏幕分辨率为1024x768,我将此ImageSource绑定到一个图像控件,但可以注意到它有多“重” 我该怎么做?对于这种情况,最好的解决方案是什么 谢谢 类型继承并最终(两者都是抽象类)。您需要检查对象的实际

我正在使用一个类库来生成一个大于3000x3750像素的大型图像源。我想将此ImageSource转换为BitmapImage,这样我就可以利用DecodePixelWidth或DecodePixelHeight,而不是每次生成此图像时都调整其大小

我需要先为用户显示此图像,大多数用户的屏幕分辨率为1024x768,我将此ImageSource绑定到一个图像控件,但可以注意到它有多“重”

我该怎么做?对于这种情况,最好的解决方案是什么


谢谢

类型继承并最终(两者都是抽象类)。您需要检查对象的实际类型,即检查
object.GetType().Name
。如果您运气好,它可能实际上返回了一个
BitmapSource
对象,您只需将其转换为该类型,然后才能使用它。

我知道这是一篇旧文章,但请尝试执行以下操作:

myBitmapImage = myImageSource as BitmapImage;

这很有效

@Hans:你使用了我在帖子中指定的电话吗?它应该真正返回对象的实际类型,而不是基类型(或变量的类型)。@Noldorin:是的,我返回了,文档还说返回类型是ImageSource。。。thanks@Hans:这真的很奇怪。。。我认为唯一可能的原因是(实现ImageSource的)实际类型是私有的,因此没有公开。请确定:您是否尝试过对从ImageSource派生的任何类型进行强制转换。(请参阅MSDN以获取列表)否则,也许您可以告诉我们您正在使用的库,以便我们可以自己尝试。相反,这对我很有效,通过强制转换将BitmapImage转换为ImageSource。谢谢如果这里的施法失败,它会默默地这样做。因此,如果
myImageSource
无法强制转换为
BitmapImage
,则
myBitmapImage
将为
null
,我将改为使用
myBitmapImage=(BitmapImage)myImageSource因为如果一切都失控,它至少会给我一个例外。