调整画布大小后,无法选择对象

时间:2017-03-24 02:52:49

标签: fabricjs

我在模态窗口中有一个Fabric画布,可以由用户调整大小。要调整画布大小,我使用canvas.setDimensions({width:w, height:h});从模态大小中取wh

调整画布大小时,对于画布中的每个对象,我会按比例更改其大小和位置。我使用原始和新的画布大小计算要应用于每个对象的top/left/width/height的因子。每次调整画布大小时都会运行此代码:

        canvas.getObjects().map(function(o) {

            // calculate factors
            var factorW = (newCanvasDim.width/o.data.canvasW);
            var factorH = (newCanvasDim.height/o.data.canvasH)

            // calculate new position
            var left = o.data.origL * factorW;
            var top = o.data.origT * factorH;
            o.setLeft(left);
            o.setTop(top);

            // calculate new size
            var width = o.data.origW * factorW;
            var height = o.data.origH * factorH;
            o.setWidth(width);
            o.setHeight(height);

            canvas.renderAll();
            canvas.calcOffset();

        });

调整大小正常,所有对象都正确地改变了它们的尺寸。问题是在调整画布大小后大多数对象都无法选择。此外,单击画布的空白区域有时会选择对象。

我在更改每个对象属性后尝试使用canvas.calcOffset();(请参阅上面的代码),但它没有帮助。任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在调整每个对象的大小后,尝试在每个对象(而不是画布)上使用setCoords()而不是calcOffset() - 在调整大小的画布中: - )。

this