Как уже говорилось ранее, вам, вероятно, не нужно записывать данные на диск для каждой операции, в том числе в пиксельном случае, если только вы не пытаетесь отменить полноэкранный фильтр, все, что вам нужно сохранить, - это данные, содержащиеся в ограничивающий прямоугольник мазка кисти, который выполнил пользователь.
Вы можете дважды буферизовать свой чертеж, то есть сохранить копию изображения перед рисованием, нарисовать копию, определить ограничивающий прямоугольник пользовательской операции, скопировать и сохранить соответствующие данные из оригинала (с информацией о размере и местоположении). ). При отмене вы берете эту копию и вставляете ее в измененную область.
Этот метод распространяется на повтор, при отмене возьмите область, которую вы собираетесь перезаписать, и сохраните ее.