如何反转面具?
How to invert mask?
我正在尝试使用以下代码反转图像蒙版位图
static final PorterDuffXfermode eraseMode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR);
public void invertSelection() {
Bitmap inverted = Bitmap.createBitmap(imageBitmap.getWidth(), imageBitmap.getHeight(), Bitmap.Config.ARGB_8888);
if (!annotationBitmap.sameAs(inverted)) {
Canvas canvas = new Canvas(inverted);
paint.setColor(Color.RED);
canvas.drawPaint(paint);
paint.setXfermode(eraseMode);
canvas.drawBitmap(annotationBitmap, 0,0,paint);
annotationBitmap = inverted;
undoStack.push(annotationBitmap.copy(annotationBitmap.getConfig(), true));
invalidate();
}
}
调用此函数后,我无法再在 annotationBitmap 上绘图。
我这里哪里做错了???
我认为你应该阅读这篇文章 beautiful article at medium
我不确定,但我认为如果您将 PorterDuff.Mode.CLEAR
更改为 PorterDuff.Mode.DST_OUT
您的问题将得到解决
我正在尝试使用以下代码反转图像蒙版位图
static final PorterDuffXfermode eraseMode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR);
public void invertSelection() {
Bitmap inverted = Bitmap.createBitmap(imageBitmap.getWidth(), imageBitmap.getHeight(), Bitmap.Config.ARGB_8888);
if (!annotationBitmap.sameAs(inverted)) {
Canvas canvas = new Canvas(inverted);
paint.setColor(Color.RED);
canvas.drawPaint(paint);
paint.setXfermode(eraseMode);
canvas.drawBitmap(annotationBitmap, 0,0,paint);
annotationBitmap = inverted;
undoStack.push(annotationBitmap.copy(annotationBitmap.getConfig(), true));
invalidate();
}
}
调用此函数后,我无法再在 annotationBitmap 上绘图。
我这里哪里做错了???
我认为你应该阅读这篇文章 beautiful article at medium
我不确定,但我认为如果您将 PorterDuff.Mode.CLEAR
更改为 PorterDuff.Mode.DST_OUT
您的问题将得到解决