Nie jestem w stanie uzyskać obwiedni płótna, aby zaktualizować się po panoramowaniu. Próbowałem requestRenderAll i zresetować współrzędne każdego obiektu, ale skrzynka obniża pozostaje w tej samej lokalizacji.

Czy istnieje inna funkcja, którą powinienem dzwonić?

Rzeczy, których próbowałem:

    if (!pausePanning && e.self.x && e.self.y && e.e.type) {
      currentX = e.self.x;
      currentY = e.self.y;
      xChange = currentX - panX;
      yChange = currentY - panY;

      if( (Math.abs(xChange) <= 100) &&
          (Math.abs(yChange) <= 100) ) {
        var delta = new fabric.Point(xChange, yChange);
        canvas.relativePan(delta);
      }

      panX = e.self.x;
      panY = e.self.y;

      // attempting to redraw bounding
      canvas.getObjects().forEach(function(o) {
        o.setCoords();
      });


      // this also doesn't work
      canvas.requestRenderAll();
    }
  }
0
Lauren 16 grudzień 2019, 10:36

1 odpowiedź

Najlepsza odpowiedź

Zakończył się Złożenie biletu i usłyszeniu; Problem polegał na tym, że musisz określić zaktualizowaną płótno po wybraniu elementów po przesuwania lub powiększaniu.

Przykład, jeśli płótno jest nazwane jako canvas zmienna:

var sel = new fabric.ActiveSelection(selection, { canvas: canvas });
canvas.setActiveObject(sel).requestRenderAll();

I a JSFiddle pokazujący powiększenie / przesuwanie z zaktualizowanym wyborem.

0
Lauren 29 luty 2020, 04:15