Java 创建一个可移动的画布覆盖
我有两个位图,因为我想混合在一起。 我使用画布来实现这一点。下面的代码将创建一个结果图像,其中遮罩50%混合到背景中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)
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;