Невозможно восстановить холст до более раннего состояния - PullRequest
0 голосов
/ 13 апреля 2019

Я хочу иметь возможность нарисовать линию, а затем отменить это. Методы восстановления / сохранения не работают. От следующего кода я ожидаю, что у вас будет пустое представление, потому что сразу после рисования линии мы восстанавливаем холст до состояния, в котором ничего не было нарисовано. Однако конечным результатом является линия на экране, что означает, что восстановление не сработало.

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.save();
    canvas.drawLine(100, 0, 100, screenWidth, paint);
    canvas.restore();
}

Я посмотрел на другие похожие посты, но они использовали пути, а не метод drawLine. Кто-нибудь может сказать мне, что я делаю неправильно или какая альтернатива может быть?

1 Ответ

0 голосов
/ 13 апреля 2019

Ключ в том, что вы должны сохранить то, что вы «рисуете», а затем получить доступ к массиву с нарисованными линиями или элементами.

public void onClickUndo () {  
    if (paths.size()>0) 
    {  
       undonePaths.add(paths.remove(paths.size()-1));
       invalidate();
     } 
    else 
    { 

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