我正在尝试在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
答案 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,以便查看图像......