Я разрабатываю приложение для рисования.Мне нужно реализовать действия отмены и повтора.Необходимо выполнить отмену, рисуя тот же штрих поверх отмены, но специальной краской.Вот мои краски для рисования и удаления:
val mainPaint = Paint().apply {
color = Color.WHITE
style = Paint.Style.STROKE
alpha = 25
xfermode = PorterDuffXfermode(PorterDuff.Mode.ADD)
isAntiAlias = true
}
val undoPaint = Paint().apply {
color = Color.WHITE
style = Paint.Style.STROKE
alpha = 25
xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_OUT)
isAntiAlias = true
}
Прежде всего, я рисую первый штрих mainPaint
:
Затем я рисую второй ход поверх первого тем же mainPaint
:
И, наконец, я снова рисую второй ход, но с undoPaint
,для реализации отмены:
Как видите, результат не похож на отмену.После отмены я ожидаю состояние, как на первой картинке, которую я прикрепил.Что я делаю не так?Что я должен сделать, чтобы это исправить?Как мне построить undoPaint
?