Silverlight 3 WriteableBitmap проблема

Я пытаюсь использовать новый WriteableBitmap в Silverlight3 RTM, но у меня ничего не получается ... все примеры и демо, которые я использовал, чтобы посмотреть и поиграть во время бета-тестирования, больше не работают. Я понял, что они немного изменили интерфейс класса, удалив, например, методы Lock и Release (которые все еще задокументированы на официальных страницах документации), а также изменили конструктор (больше не нужно использовать формат пикселей в качестве аргумента, все растровые изображения будут 32-битными из Мое понимание).

Кому-нибудь удалось заставить пример работать? Вот минималистичный пример (я нашел его на каком-то форуме и немного изменил); не работает, растровое изображение не отображается

Да, я называю это ... вот минимальный пример (я нашел в сети и немного изменил его); это не работает, у меня пустая страница (xaml содержит единственный элемент управления Image с именем inputImage).

    int imageWidth = 100;
    int imageHeight = 100;

    //Create the bitmap
    WriteableBitmap b = new WriteableBitmap(imageWidth, imageHeight);
    for (int x = 0; x < imageWidth; x++)
    {
        for (int y = 0; y < imageHeight; y++)
        {
            // generate a color in 32bit format
            byte[] components = new byte[4];
            components[0] = (byte)(x % 255);        // blue
            components[1] = (byte)(y % 255);        // green
            components[2] = (byte)(x * y % 255);    // red
            components[3] = 0;      // unused

            int pixelValue = BitConverter.ToInt32(components, 0);

            // Set the value for the 
            b.Pixels[y * imageWidth + x] = pixelValue;
        }
    }

    b.Invalidate();
    inputImage.Source = b;

Спасибо за помощь Риккардо


person Orporick    schedule 14.07.2009    source источник


Ответы (2)


Изменять

components[3] = 0;

to

components[3] = 255;

и вы получите свое изображение.

Это значение представляет значение альфа-канала растрового изображения, поскольку WriteableBitmap поддерживает только формат Pbgra32 (см. http://www.cnblogs.com/shinyzhu/archive/2009/07/11/silverlight-3-Release.html)

Если вы установите его на 0, вы получите белое изображение.

person Community    schedule 13.08.2009

Я думаю, вам также следует установить ширину и высоту вашего inputImage в XAML на 100 x 100, чтобы увидеть изображение ...

person Roboblob    schedule 18.07.2009