Не найдено ни одного компонента, пригодного для выполнения этой операции - PullRequest
4 голосов
/ 31 октября 2011

Здесь мой кусок кода, но у меня есть ошибка

Компонент формирования изображения, подходящий для выполнения этой операции, не найден

в строке " 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 Ответ

4 голосов
/ 31 октября 2011

Ну, вы не можете просто передать массив данных пикселей;класс не может знать, какую длину и высоту, какие каналы и какую глубину цвета должен иметь изображение.Вам необходимо предоставить действительный заголовок для поддерживаемых форматов, например, bmp, jpg или png.Есть и другие, список где-то есть в MSDN.

Так как вы хотите создать растровое изображение с нуля, вы можете использовать WritableBitmap вместо. (Кстати, DecodePixelWidth не то, что вы, вероятно, думаете, он делает; он просто уменьшает изображение после декодирования, чтобы сохранить память)

...