2 votes

Fabricjs : Mise à jour du SVG sur le canevas

J'utilise fabricjs 1.6.4 et je veux mettre à jour le svg existant avec le nouveau. J'utilise ce code pour ajouter le nouveau SVG :

fabric.loadSVGFromURL(url, function (objects, options) {
          var image = fabric.util.groupSVGElements(objects, options);
          image.name = 'sticker';
          canvas.add(image);
          image.scaleToHeight(100);
          image.center();
          image['selectable'] = false;
          image['evented'] = false;
          image.setCoords();
          canvas.renderAll();
        });
      }

Comment puis-je remplacer le SVG existant par le nouveau. J'ai fait quelque chose de similaire dans l'image mais je n'arrive pas à le reproduire en SVG. Voici le code de l'image :

$scope.fillImage = function(src) {
    fabric.Image.fromURL(src, function(img) {
        var object = canvas.getActiveObject();
        object._element.src = src;
        canvas.renderAll();
    });
}

J'ai besoin de quelque chose comme ça. Aidez-moi, s'il vous plaît.

1voto

Helder Sepulveda Points 4117

Vous avez déjà la variable image faites en sorte que ce soit global et que vous puissiez enlever avant d'ajouter...
Voici un exemple :

var image;
var canvas = new fabric.Canvas('canvas');
var url = "http://swagger-net-test.azurewebsites.net/api/SvgImage?"

function callback(objects, options) {
  if (image) canvas.remove(image);
  image = fabric.util.groupSVGElements(objects, options);
  image.name = 'sticker';
  canvas.add(image);
  image.scaleToHeight(60);
  image.center();
  image.setCoords();
  canvas.renderAll();
}

fabric.loadSVGFromURL(url + "color=red", callback)
setTimeout(
  function() {
    fabric.loadSVGFromURL(url + "color=blue", callback)
  },
  3000
);

<canvas id="canvas" width="180" height="180"></canvas>

<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/2.3.4/fabric.min.js"></script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X