如何将Android.Graphics的GetPixel给出的Int转换为Color?

时间:2016-07-12 08:36:13

标签: c# android bitmap xamarin.android

我想获取位图中像素的颜色。通常我使用GetPixel(x,y)。但是使用Android.Graphics,这个方法给了我一个代表Color的int。所以我需要知道如何从该整数中获取此颜色。

事实上,这就是我想要最终完成的事情(在mPlan中删除白色):

for (int x=0; x <  PlanWidth; x++)
{
    for (int y=0; y <  PlanHeight; y++)
    {
        if (mPlan.GetPixel(x, y) ==  Color.White)                    
            mPlan.SetPixel(x, y, (Color.White - mPlan.GetPixel(x, y)));
    }
}

2 个答案:

答案 0 :(得分:3)

Android.Graphics.Color有构造函数Color(Int32)。要将int转换为Color,您可以执行以下操作:

new Color(mPlan.GetPixel(x, y)) ==  Color.White

但我认为最好使用Color.WhiteColor.White.ToArgb()转换为int并将SetPixel()参数替换为Color.Black,因为Color.White - Color.White将为Color.Black }。

int white = Color.White.ToArgb();
for (int x=0; x < PlanWidth; x++)
{
    for (int y=0; y < PlanHeight; y++)
    {
        if (mPlan.GetPixel(x, y) ==  white)                    
            mPlan.SetPixel(x, y, Color.Black);
    }
}

答案 1 :(得分:1)

要在xamarinC#中将你的int颜色转换为RGB颜色,你只需要这样做:

Color myColor = new Color(yourBitmap.GetPixel(x,y);

然后你就可以使用它的组件:

 byte myColorRedValue = myColor.R;
 byte myColorBlueValue = myColor.B;
 byte myColorGreenValue = myColor.G;
 byte myColorAlphaValue = myColor.A;

因此,例如,如果你想让你的颜色变暗,就这样做:

 myColor.R = (byte)(myColor.R / 2);
 myColor.G = (byte)(myColor.G / 2);
 myColor.B = (byte)(myColor.B / 2);

这将给你三个0到255之间的int。要使你的颜色变暗,你只需要用一些数字来减去它们(显然你必须检查你的结果是上级还是等于零)。

这是实现您想要的最简单的方法,并从初学者的角度理解它是如何工作的