获取Windows Phone上图像的第一个像素的颜色

时间:2013-12-10 10:17:27

标签: c#-4.0 windows-phone-8

我正在使用以下代码来获取图像第一个像素的颜色

var wb = new WriteableBitmap((BitmapImage)Image.Source);
int pixelxy = wb.Pixels[0];

现在我在pixelxy中得到结果-10975。如何将此值转换为颜色?

2 个答案:

答案 0 :(得分:1)

要获得第一个像素的颜色,我建议您使用:

Color c = wb.GetPixel(0, 0);

如果您真的想要使用像素阵列并自行转换,您可以检查GetPixel函数的工作方式,因为它是开源的(参见WriteableBitmapBaseExtensions.cs at Codeplex),只需更改获取c值的方式即可得到这个,这应该做的伎俩:

var c = wb.Pixels[0];
var a = (byte)(c >> 24);


// Prevent division by zero
int ai = a;
if (ai == 0)
{
   ai = 1;
}

// Scale inverse alpha to use cheap integer mul bit shift
ai = ((255 << 8) / ai);
Color theColor = Color.FromArgb(a,
                 (byte)((((c >> 16) & 0xFF) * ai) >> 8),
                 (byte)((((c >> 8) & 0xFF) * ai) >> 8),
                 (byte)((((c & 0xFF) * ai) >> 8)));

答案 1 :(得分:0)

你可以使用

Color color = bitmap.GetPixel(0,0);