我有一个两维的sARGB颜色数组(System.Windows.Media.Color),用于描述我想在WritableBitmap中编写的内容。该数组的宽度和高度与预期的位图相同。问题是,只要我能看到,WritableBitmap的WritePixels方法需要一个整数数组。如何将我的颜色转换为所述数组?
答案 0 :(得分:1)
数组中元素的数据类型是什么?如果它们是Color
值,则Color
结构具有ToArgb
方法,该方法将颜色作为整数返回。
WritePixels
方法接受大多数任何简单类型的一维数组,如byte,short,int,long。对于ARGB格式,每个像素需要四个字节,或一个int。
编辑:
如果您有System.Window.Media.Color
个值,则可以使用A
,R
,G
和B
属性来获取颜色组件的字节值:< / 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;
}
}