Как бы вы реализовали Undo в программе для растрового рисования?
Вы делаете программу для рисования, как Paint. Вы хотите иметь возможность отменить / повторить мазки кисти. Как бы вы это реализовали?
Оптимизировать по скорости и памяти.
2 ответа
Используйте квадродерево для записи предыдущего состояния измененной части холста. При отмене замените состояние холста из дерева квадрантов.
Создайте резервную копию холста. Выберите прямоугольное пятно, которое полностью окружает мазок кисти. Сохраните растровое изображение, содержащееся в этом патче, как в новой версии, так и в резервной копии. Теперь вы можете изменить эти изменения, чтобы отменить или повторить удар.
Может использовать много памяти.