Fabric.js:如何仅使用addWithUpdate()对对象进行分组

Fabric.js: how to group objects using only addWithUpdate()

本文关键字:对象 js 何仅使 addWithUpdate Fabric      更新时间:2023-09-26

我的观点是创建一个由3个矩形组成的组,并将该组居中。问题是我无法将这些矩形分组,所以下面的问题是,当我将组居中时,所有矩形都将在同一个中心位置重叠。

从代码中解释,为了更容易理解,每个i中的矩形都有不同的位置,所以我必须创建一个组来存储它们,然后将组居中,以防止矩形在同一中心位置重叠。

    for (var i = 0; i < count; i++) {
        var Bid = '#' + i;
        var Bheight = $(Bid).height();
        var Bwidth = $(Bid).width();
        var Btop = $(Bid).position().top;
        var Bleft = $(Bid).position().left;
        alert(Bleft);
        var clipRect = new fabric.Rect({
            originX: 'left',
            originY: 'top',
            height: Bheight,
            width: Bwidth,
            left: Bleft,
            top: Btop,
            fill: '#DDD',
            opacity: 0.5,
            strokeWidth: 0,
            selectable: false
        });
        var group = new fabric.Group();
        group.addWithUpdate(clipRect);
        canvas.add(group);
        canvas.centerObject(group);
        canvas.renderAll();
    }

然而,如果你对我的观点有更好的解决方案,请提出。我会非常感激的。

每次循环迭代时都会创建一个新组。

var group = new fabric.Group();
for (var i = 0; i < count; i++) {
    var Bid = '#' + i;
    var Bheight = $(Bid).height();
    var Bwidth = $(Bid).width();
    var Btop = $(Bid).position().top;
    var Bleft = $(Bid).position().left;
    alert(Bleft);
    var clipRect = new fabric.Rect({
        originX: 'left',
        originY: 'top',
        height: Bheight,
        width: Bwidth,
        left: Bleft,
        top: Btop,
        fill: '#DDD',
        opacity: 0.5,
        strokeWidth: 0,
        selectable: false
    });

    group.addWithUpdate(clipRect);
}
canvas.add(group);
canvas.centerObject(group);
canvas.renderAll();