Canvas 在现有图像后面绘制圆圈

Canvas drawCircle behind an existing image

请帮我弄清楚我做错了什么。我必须根据应用程序逻辑用不同的颜色在图像(以位图形式给出)后面画一个圆圈,我使用以下代码。

        Bitmap workingBitmap = Bitmap.createBitmap(bitmap);
        Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);

        Canvas canvas = new Canvas(mutableBitmap);

        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setColor(Color.BLUE);
        paint.setStyle(Paint.Style.FILL_AND_STROKE);

        int horizontalPadding = (iconSize - drawingWidth) / 2;
        int verticalPadding = (iconSize - drawingHeight) / 2;

        canvas.drawCircle(120, 120, 100, paint);
        return mutableBitmap;

我得到的是图像上方的圆圈,它刚好完全覆盖了图像,如何告诉代码图像有上层。

谢谢

在您的代码中,您将 mutableBitmap 用作 canvas 并在其上绘制圆圈。如果你想在圆上面画你的图像,你应该在画圆之后画它。代码:

    Bitmap workingBitmap = Bitmap.createBitmap(bitmap);
    Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
    // Create an empty bitmap
    Bitmap output = Bitmap.createBitmap(mutableBitmap.getWidth(), mutableBitmap.getHeight(), 
            mutableBitmap.getConfig());
    // Use empty bitmap as canvas
    Canvas canvas = new Canvas(output);

    Paint paint = new Paint();
    paint.setAntiAlias(true);
    paint.setColor(Color.BLUE);
    paint.setStyle(Paint.Style.FILL_AND_STROKE);

    int horizontalPadding = (iconSize - drawingWidth) / 2;
    int verticalPadding = (iconSize - drawingHeight) / 2;

    canvas.drawCircle(120, 120, 100, paint);
    // And now draw image above circle
    canvas.drawBitmap(mutableBitmap, 0, 0, null);
    return output;