Как инвертировать маску? - PullRequest
       149

Как инвертировать маску?

0 голосов
/ 17 января 2020

Я пытаюсь инвертировать растровое изображение маски, используя приведенный ниже код

    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.

Что я здесь не так делаю? ??

1 Ответ

1 голос
/ 05 марта 2020

Я думаю, вы должны прочитать эту прекрасную статью на среднем , и я не уверен, но я думаю, что если вы измените PorterDuff.Mode.CLEAR на PorterDuff.Mode.DST_OUT, ваша проблема решится

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...