Проблема Silverlight 3 WriteableBitmap - PullRequest
3 голосов
/ 14 июля 2009

Я пытаюсь использовать новый 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;

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

Ответы [ 2 ]

2 голосов
/ 13 августа 2009

Изменение

components[3] = 0;

до

components[3] = 255;

и вы получите свою фотографию.

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

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

0 голосов
/ 18 июля 2009

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

...