Android - Canvas Paint - только рисовать поверх белого / прозрачного

Мне нужно нарисовать прямоугольник только над областями, которые еще не были нарисованы.

Например, когда я вызываю drawText, чтобы написать что-то, а затем рисую над ним Rect, он должен быть за текстом.

Я не могу просто сначала нарисовать Rect, а затем написать текст в этом случае.

Я читал о XFermode, но я не знаю, как его использовать...

1 ответ

Вы можете настроить свой объект рисования для использования PorterDuffXfermode с режимом наложения Mode.MULTIPLY,

import android.graphics.PorterDuffXfermode;
import android.graphics.PorterDuff.Mode;

private void setupPaint(Paint paint) {
    paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY));
}

private void clearXfermode(Paint paint) {
    paint.setXfermode(null);
}

По моему мнению, для производительности лучше сначала нарисовать прямоугольник, а затем нарисовать текст, но если это невозможно, используйте PorterDuffXfermode,

Другие вопросы по тегам