Silverlight 3 WriteableBitmap问题

我正在尝试在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的帮助

更改

 components[3] = 0; 

 components[3] = 255; 

你得到你的照片。

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

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

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