Как отменить прозрачный рисунок? - PullRequest
0 голосов
/ 17 октября 2018

Я разрабатываю приложение для рисования.Мне нужно реализовать действия отмены и повтора.Необходимо выполнить отмену, рисуя тот же штрих поверх отмены, но специальной краской.Вот мои краски для рисования и удаления:

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:

enter image description here

Затем я рисую второй ход поверх первого тем же mainPaint:

enter image description here

И, наконец, я снова рисую второй ход, но с undoPaint,для реализации отмены:

enter image description here

Как видите, результат не похож на отмену.После отмены я ожидаю состояние, как на первой картинке, которую я прикрепил.Что я делаю не так?Что я должен сделать, чтобы это исправить?Как мне построить undoPaint?

...