1

我有一个带有背景图片的画布,我可以在上面写字、画线和放置较小的图片,以进行旋转、缩放等。我需要更改其中一个位图的颜色。我有一个看起来像这样的颜色选择器:

public void colorChanged(int color) {
    if (isText) {
        myView.setTextColor(color);
    } else if(isDrawing) {
        mPaint.setColor(color);
        myView.setPaint(mPaint);
    } else if(ispic) {
           //TODO
    }
}

我尝试了与我所拥有的 isText 部分代码类似的东西,但它只会改变我放置的地方的行的颜色,或者移动我的图片(如果我不改变颜色,它当前是透明的)。

myView 是一个 CustomView,我有我的 onDraw 方法。

4

2 回答 2

1

ColorMatrix您可以在 android 中使用更改位图的颜色。

访问这篇文章了解更多信息。这里的 ColorMatrix示例。

于 2013-02-01T11:37:12.950 回答
1

选项1:

Paint p = new Paint(Color.RED);
ColorFilter filter = new LightingColorFilter(Color.RED, 1);
p.setColorFilter(filter);

然后用那个Paint对象画。

选项 2:

    Bitmap sourceBitmap = BitmapFactory.decodeFile(imgPath);
    float[] colorTransform = {
            0, 1f, 0, 0, 0, 
            0, 0, 0f, 0, 0,
            0, 0, 0, 0f, 0, 
            0, 0, 0, 1f, 0};

    ColorMatrix colorMatrix = new ColorMatrix();
    colorMatrix.setSaturation(0f); //Remove Colour 
    colorMatrix.set(colorTransform); //Apply Red say

    ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
    Paint paint = new Paint();
    paint.setColorFilter(colorFilter);   

    Display display = getWindowManager().getDefaultDisplay(); 

    Bitmap resultBitmap = Bitmap.createBitmap(sourceBitmap, 0, (int)(display.getHeight() * 0.15), display.getWidth(), (int)(display.getHeight() * 0.75));            


    Canvas canvas = new Canvas(resultBitmap);
    canvas.drawBitmap(resultBitmap, 0, 0, paint);
于 2013-02-01T11:40:17.403 回答