3

几个月前,我构建了一些在线示例,例如Jeff Prosise 的这个示例,它们使用 Silverlight 中的 WriteableBitmap 类。

今天使用最新的 Silverlight3 安装程序 (3.0.40624.0) 重新访问它们,API 似乎发生了变化。

我想出了一些变化。例如,WriteableBitmap 数组访问器已经消失,但我在新的 Pixels 属性中找到了它,所以不要写:

 bmp[x]

我可以写

bmp.Pixels[x]

这些调用是否有类似的简单替换,或者使用模式本身是否发生了变化?

bmp = new WriteableBitmap(width, height, PixelFormats.Bgr32);
bmp.Lock();
bmp.Unlock();

谁能指出我使用更新的 API 的工作示例?

4

2 回答 2

2

关于切换到新的 WriteableBitmap 的另一个重要细节在这个答案中给出......因为像素格式现在总是 pbgra32,你必须为每个像素设置一个 alpha 值,否则你只会得到一张全白的图片。换句话说,以前生成像素值的代码如下:

byte[] components = new byte[4];
components[0] = (byte)(blue % 256);       // blue
components[1] = (byte)(grn % 256);        // green
components[2] = (byte)(red % 256);        // red
components[3] = 0;                        // unused

应改为:

byte[] components = new byte[4];
components[0] = (byte)(blue % 256);       // blue
components[1] = (byte)(grn % 256);        // green
components[2] = (byte)(red % 256);        // red
components[3] = 255;                      // alpha
于 2010-01-17T16:02:44.370 回答
1

如果你不使用Lock并且Unlock只使用WritabelBitmap(int, int)构造函数会发生什么?事情会破裂吗?

在 SL3 Beta 和发布之间,这个 API 似乎发生了变化。请参阅重大更改文档勘误表 (Silverlight 3)

于 2009-12-01T17:47:56.400 回答