Android,如何从 Canvas 获取像素颜色?

标签 android colors android-canvas draw pixel

我有这样的代码:

// ...

public class MyImageView extends ImageView

    public MyImageView(Context context, String value /* some other params */) {
        super(context);

        // some predefines
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // some preparations
        try {
            // here I call third party lib like:
            someObj.draw(canvas);

            // HERE I WANT TO CHANGE COLOR OF SOME PIXELS ACCORDING TO THEIR CURRENT COLOR
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

代替 UPCASE 字母注释,我想根据第三方库绘制后的当前颜色更改 Canvas 上某些像素的颜色。我可以使用 canvas.drawPoint(x, y, paint) 方法来设置像素颜色,但是如何通过 (x,y) 获取某个像素的颜色?

最佳答案

我这里可能有一些东西(未经测试):

public static Bitmap getBitmap(Canvas canvas) {
    // mBitmap is a private value inside Canvas.
    // time for some dirty reflection:
    try {
        java.lang.reflect.Field field = Canvas.class.getDeclaredField("mBitmap");
        field.setAccessible(true);
        return (Bitmap)field.get(canvas);
    }
    catch (Throwable t) {
        return null;
    }
}

然后您可以通过以下方式访问像素:

Bitmap map = getBitmap(canvas);
if (map != null) {
    int rgb = map.getPixel(100,100);
    int red = android.graphics.Color.red(rgb);
    ...
}

关于Android,如何从 Canvas 获取像素颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12651440/

相关文章:

android - RxJava-发出新项目时如何停止正在运行的任务

colors - 如何更改 mIRC 中链接的颜色?

java - 如何在android中为透明png图像添加描边/边框?

Android:颜色偏好?

android - 如何通过单击 libgdx 上的按钮打开另一个类? (android开发eclipse)

r - 将颜色保存在 R 调色板中

android - 在 Android 中的特定区域上绘画

java - 带 Canvas 的 2D 移动播放器

java - 从适配器中选择 Android

javascript - CSS 文本装饰 : reverse