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

标签 c# android bitmap xamarin.android

我想获取位图中像素的颜色。为此,我通常使用 GetPixel(x,y)。但是对于 Android.Graphics,该方法为我提供了一个代表颜色的 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)));
    }
}

最佳答案

Android.Graphics.Color有构造函数 Color(Int32)。要将 int 转换为 Color,您可以这样做:

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

但我认为使用 Color.White.ToArgb()Color.White 转换为 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);
    }
}

关于c# - 如何将 Android.Graphics 的 GetPixel 给出的 Int 转换为 Color?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38323776/

相关文章:

android - 如果不带recycle()设置myBitmap = null,带recycle()有什么区别

c# - 合并MDI工具栏

c# - 从 Dispose() 触发事件是否可以?

c# - 如何找到 using 指令中命名空间来自哪个引用文件?

java - KSOAP 元素的排序

java - 使用 Android 服务发送电子邮件

java - 如何在大于屏幕尺寸的 Canvas 上绘图?

c# - 在 C# 中,跨多个源代码行传播单行字符串文字的最佳方法是什么?

android - 显示异常的 'nicer' 方式?

java - 如何将普通位图转换为单色位图android