Как бы вы реализовали Undo в программе для растрового рисования? - PullRequest
3 голосов
/ 28 августа 2009

Вы создаете программу для рисования, такую ​​как Paint. Вы хотите иметь возможность отменить / повторить мазки кисти. Как бы вы это реализовали?

Оптимизация по скорости и памяти.

Ответы [ 2 ]

2 голосов
/ 28 августа 2009

Используйте quadtree , чтобы записать предыдущее состояние измененной части холста. При отмене замените состояние холста из дерева квадрантов.

0 голосов
/ 28 августа 2009

Создание резервной копии холста. Выберите прямоугольное пятно, которое полностью окружает мазок кисти. Сохраните растровое изображение, содержащееся в этом патче, в новой версии и в резервной копии. Теперь вы можете изменить эти изменения, чтобы отменить или повторить удар.

Может использовать много памяти.

...