我之前通过使用 toDataURL 方法将画布状态存储到 undo_array 中来完成了这个操作:
var undo_array = [];
在进行任何更改之前:
undo_array.push(myCanvas.toDataURL("image/png"));
var myImg = new Image();
oImg.onload = function() {
var ctx = document.getElementById("canvasID").getContext("2d");
ctx.drawImage(myImg, 0, 0);
}
myImg.src = undo_array.pop();
但是如果您也更改了画布的大小,我猜您可以使用另一个数组来存储/恢复大小变化。