将Color sARGB数组写入WriteableBitmap

时间:2009-07-18 20:49:34

标签: .net wpf

我有一个两维的sARGB颜色数组(System.Windows.Media.Color),用于描述我想在WritableBitmap中编写的内容。该数组的宽度和高度与预期的位图相同。问题是,只要我能看到,WritableBitmap的WritePixels方法需要一个整数数组。如何将我的颜色转换为所述数组?

1 个答案:

答案 0 :(得分:1)

数组中元素的数据类型是什么?如果它们是Color值,则Color结构具有ToArgb方法,该方法将颜色作为整数返回。

WritePixels方法接受大多数任何简单类型的一维数组,如byte,short,int,long。对于ARGB格式,每个像素需要四个字节,或一个int。

编辑:
如果您有System.Window.Media.Color个值,则可以使用ARGB属性来获取颜色组件的字节值:< / p>

byte[] pixelData = new byte[colorArray.Length * 4];
int ofs = 0;
for (int y = 0; y < colorArray.GetLength(1); y++) {
   for (int x = 0; x < colorArray.GetLenth(0); x++) {
      Color c = colorArray[x, y];
      pixelData[ofs++] = c.A;
      pixelData[ofs++] = c.R;
      pixelData[ofs++] = c.G;
      pixelData[ofs++] = c.B;
   }
}