FabricJS 更新边界框

FabricJS Update Bounding Box

我无法在平移后更新 canvas 的边界框。我已尝试 requestRenderAll 并重置每个对象的坐标,但边界框保持在同一位置。

我应该调用其他函数吗?

我尝试过的事情:

    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();
    }
  }

结束 filing a ticket 并收到回复;问题是您需要在平移或缩放后 select 项目时指定更新的 canvas。

一个例子,如果你的 canvas 被命名为 canvas 变量:

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

还有一个 jsfiddle 显示 zoom/panning 更新后的 selection。