1

背景画像のあるキャンバスがあり、その上に、書き込み、線の描画、小さな画像の配置、回転、拡大縮小などを行うことができます。これらのビットマップの 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

オプション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 に答える
1

ColorMatrixAndroidで使用してビットマップの色を変更できます。

詳細については、この投稿を参照してください。ColorMatrixの例はこちら。

于 2013-02-01T11:37:12.950 に答える