Итак, вы перерисовываете свой холст, используя список отмен, верно?И после этого вы выводите изображение с помощью toDataUrl ()?
Мне кажется, что проблема заключается в
this.undoList.push({
x_start: currentX,
y_start: currentY,
x_end: this.lastX,
y_end: this.lastY,
color: this.currentColour, <== Is this an object?
size: this.brushSize,
mode: this.ctx.globalCompositeOperation
});
, если this.currentColour является объектом, я думаю, что свойстваизменилось где-то еще в коде, и к тому времени, когда вы восстанавливаете шаги, вы получаете черный стиль, не уверенный, является ли он стилем по умолчанию.
, поэтому вы можете попробовать это вместо
this.undoList.push({
x_start: currentX,
y_start: currentY,
x_end: this.lastX,
y_end: this.lastY,
color: {
prop1: this.currentColour.prop1
prop2: this.currentColour.prop2
...
}
size: this.brushSize,
mode: this.ctx.globalCompositeOperation
});
замена prop1, prop2 и т. д. фактическими свойствами, которыми вы обладаете в этом объекте.Таким образом, вы создаете новый объект (копируете его) вместо того, чтобы передавать ссылку на свой старый.
Вы можете сделать его более изящным, но вот так вы сможете лучше рассуждать.