Java 创建一个可移动的画布覆盖

Java 创建一个可移动的画布覆盖,java,android,android-canvas,Java,Android,Android Canvas,我有两个位图,因为我想混合在一起。 我使用画布来实现这一点。下面的代码将创建一个结果图像,其中遮罩50%混合到背景中 Bitmap output = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(), Config.ARGB_8888); Paint p = new Paint(); Paint maskPaint = new Paint(Paint.ANTI_ALIAS_FLAG)

我有两个位图,因为我想混合在一起。 我使用画布来实现这一点。下面的代码将创建一个结果图像,其中遮罩50%混合到背景中

 Bitmap output = Bitmap.createBitmap(picture.getWidth(),
            picture.getHeight(), Config.ARGB_8888);

    Paint p = new Paint();
    Paint maskPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    maskPaint.setAlpha(127);

    Canvas c = new Canvas(output);
    c.drawBitmap(picture, 0, 0, p);
    c.drawBitmap(mask, 0, 0, maskPaint);
    return output;
我还一直在尝试是否能够使用Xfermode删除位图的某些部分。我用以下代码完成了这项工作:(这将创建一个孔,一个正方形)

现在,我想知道,如果使用画布,我是否能够绘制背景和遮罩,同时能够移除遮罩的部分,让背景“发光”

谢谢

    int height = BitmapHandler.getMainBitmap().getHeight();
    int width = BitmapHandler.getMainBitmap().getWidth();
    Bitmap bmOverlay = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

    Paint p = new Paint();
    p.setXfermode(new PorterDuffXfermode(Mode.CLEAR));              
    Canvas c = new Canvas(bmOverlay); 
    c.drawBitmap(BitmapHandler.getMainBitmap(), 0, 0, null); 
    c.drawRect(30, 30, 100, 100, p);

    return bmOverlay;