Silverlight 3 WriteableBitmap问题

时间:2009-07-14 09:30:56

标签: c# silverlight-3.0

我正在尝试在Silverlight3 RTM中使用新的WriteableBitmap,但是我失败了..我曾经在测试期间看到和玩过的所有示例和演示都没有用。我知道他们稍微改变了类接口,删除了例如Lock和Release方法(仍然在官方文档页面中记录)并且还改变了构造函数(不再将pixelformat作为参数,所有位图都是32位来自我的理解)。

有人设法让一个例子有效吗?这里有一个简约的例子(我在一些论坛中发现它并略微修改它);它不起作用,没有显示位图

是的,我正在呼唤它..这里有一个最小的例子(我在网上发现并略微修改它);它不起作用,我得到一个空白页面(xaml包含一个名为inputImage的Image控件)。

    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;

感谢您的帮助 的Riccardo

2 个答案:

答案 0 :(得分:2)

更改

components[3] = 0;

components[3] = 255;

你得到了你的照片。

此值表示位图的Alpha通道值,因为WriteableBitmap支持的唯一格式是Pbgra32(请参阅http://www.cnblogs.com/shinyzhu/archive/2009/07/11/silverlight-3-released.html

如果将其设置为0,则会显示白色图片。

答案 1 :(得分:0)

我认为您还应该将XAML中inputImage的宽度和高度设置为100 x 100,以便查看图像......