Три изображения в одной ткани js Canvas, очистка и обновление определенного изображения

У меня есть тканевый холст.

В HTML

<canvas id="template-editor-canvas" width="585" height="460"></canvas>

В сценарии

var canvas = new fabric.Canvas('template-editor-canvas', {
    selectionColor: 'red',
    selectionLineWidth: 2
});

$scope.updateOnNgClickOne = function () {
    fabric.Image.fromURL("imageOne.png", function(img) {
                        canvas.add(img).renderAll();
                      }, {
                            width: 167,
                            height: 74,
                            left: 2,
                            top: 2,
                            angle: 0,
                            hasBorders: false,
                            hasControls: false,
                            hasRotatingPoint: false,
                            lockMovementX: false,
                            lockMovementY: false
                         });
};

$scope.updateOnNgClickTwo = function () {
    fabric.Image.fromURL("imageTwo.png", function(img) {
                        canvas.add(img).renderAll();
                      }, {
                            width: 167,
                            height: 74,
                            left: 2,
                            top: 200,
                            angle: 0,
                            hasBorders: false,
                            hasControls: false,
                            hasRotatingPoint: false,
                            lockMovementX: false,
                            lockMovementY: false
                         });
};

$scope.updateOnNgClickThree = function () {
    fabric.Image.fromURL("imageThree.png", function(img) {
                        canvas.add(img).renderAll();
                      }, {
                            width: 167,
                            height: 74,
                            left: 2,
                            top: 400,
                            angle: 0,
                            hasBorders: false,
                            hasControls: false,
                            hasRotatingPoint: false,
                            lockMovementX: false,
                            lockMovementY: false
                         });
};

Проблема заключается в том, что всякий раз, когда я нажимаю, новый объект изображения добавляется каждый раз поверх существующего. Если я попытаюсь очистить перед рендерингом ( canvas.clear()), весь холст будет очищен.

Что мне нужно, когда я нажимаю, чтобы обновить ImageOne, это конкретное изображение должно быть удалено и повторно отрендерено.

Я ожидаю, как показано ниже. Возможно, кроме этого метода ImageFromUrl.

var canvas = new fabric.Canvas('c');
var rect = new fabric.Rect();
canvas.add(rect); // add object
canvas.remove(rect); // remove previously-added fabric.Rect

0 ответов

Другие вопросы по тегам