我想获取位图中像素的颜色。通常我使用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)));
}
}
答案 0 :(得分:3)
Android.Graphics.Color有构造函数Color(Int32)
。要将int转换为Color
,您可以执行以下操作:
new Color(mPlan.GetPixel(x, y)) == Color.White
但我认为最好使用Color.White
将Color.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。要使你的颜色变暗,你只需要用一些数字来减去它们(显然你必须检查你的结果是上级还是等于零)。
这是实现您想要的最简单的方法,并从初学者的角度理解它是如何工作的