Я хотел бы знать, как приложения, такие как Adobe Photoshop реализовать свою историю рисования с возможностью вернуться или отменить удары по растровой графике без необходимости перерисовывать каждый удар с самого начала ...HTML5 Canvas Drawing История
Я хочу реализовать аналогичную функцию истории в приложении для рисования HTML5, над которым я работаю, но дублируя холст после каждых стоков, кажется, что он будет использовать слишком много памяти для практического подхода, особенно на более крупном холсте ». .
Любые предложения о том, как это можно реализовать практичным и эффективным образом?
Не пытайтесь сохранить весь холст после каждого удара. Сохраните каждую команду рисования в массив. Затем вы можете отменить, выбирая последний элемент (ы) с конца массива, очищая холст и перерисовывая все остальные элементы (== перезаписывая все остальные команды рисования). – markE
Да, это то, чего я пытаюсь избежать, потому что требуется слишком много времени, чтобы перерисовать ... Мне интересно, как обрабатываются Photoshop и подобные приложения, они не перерисовывают все с самого начала ... – user1960364
Холст достаточно быстр перерисовать большинство рисунков с нуля. Хотя у меня нет источника Photoshop, я подозреваю, что PS действительно перерисовывает с нуля, используя команды, а не сохраняет целые точки останова растра. Я говорю это, потому что в истории PS перечислены все команды. И PS Действия, безусловно, работают, играя в команды. – markE