首页 > 解决方案 > FabricJS 更新边界框

问题描述

我无法在平移后更新画布的边界框。我尝试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();
    }
  }

标签: fabricjs

解决方案


最终提交了一张罚单并收到了回复;问题是您需要在平移或缩放后选择项目时指定更新的画布。

如果您的画布被命名为canvas变量的示例:

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

还有一个jsfiddle显示带有更新选择的缩放/平移。


推荐阅读