没有发现适合于完成该操作的成像组件

时间:2011-10-30 21:40:55

标签: c# wpf memorystream

这是我的一段代码,但我有一个错误

  

未找到适合完成此操作的成像组件

在“ EndInit()”行中。

我已经阅读了WIC注册表修改(注意:我的操作系统是Windows 7,我的IDE是VS 2010),但它根本不起作用:(

我想知道你是否让我知道如何解决它。

BitmapImage myBitmapImage = new BitmapImage();


byte[] DM = new byte[307200];

for (int i = 0; i < 640; i++)
    for (int j = 0; j < 480; j++)
        if (i < 500)
            DM[i + j] = i;

using (System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(DM))
{
    myBitmapImage.BeginInit();
    myBitmapImage.StreamSource = memoryStream;
    myBitmapImage.DecodePixelWidth = 640;
    myBitmapImage.EndInit();

}

img.Source = myBitmapImage;

1 个答案:

答案 0 :(得分:4)

好吧,你不能只传递一个像素数据数组;课堂上没有办法知道图像的长度和高度,通道和颜色深度。您需要为支持的格式提供有效的标头,例如bmp,jpg或png。还有其他一些,MSDN上的某个列表存在。

由于您想要从头开始创建位图,您可能需要使用WritableBitmap代替。

(顺便说一下,DecodePixelWidth不是你想象的那样;它只是在解码后缩小图片以节省内存)