javascript - Fabricjs 组在另一个组内

标签 javascript fabricjs

我对 FabricJS 中的组有疑问。当我添加例如。 2 个组在另一个组中,我无法正确设置内部组的 left 和 top 属性。看看我的代码。

字母 A 应在左上角(上:0,左:0),字母 B 应在 A 下方(上:50,左:50)。

但是在这个例子中,字母在中间,当我改变 B 的位置时,A 的位置也会改变。

它是 FabricJS 中的错误吗?

var canvas = new fabric.Canvas('editorCnvs');

function getCell(contentTxt, fontSize, leftOffset, topOffset) {
        var cellCnt = new fabric.Text(contentTxt, {
            fontSize: fontSize
        });

        var cellGrp = new fabric.Group([cellCnt], {
            height: 50,
            width: 50,
            top: topOffset,
            left: leftOffset
        });

        return cellGrp;
    }
    
    var cellsArray = [];

    //It should be on top left corner
    cellsArray.push(
            getCell('A', 30,
                    0, 0));

        
    cellsArray.push(
            getCell('B', 30,
                    50, 50));

    var rowGrp = new fabric.Group(cellsArray, {
        height: 200,
        width: 200
    });

canvas.add(rowGrp);
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script>
<canvas id="editorCnvs" width="400" height="566">
</canvas>

最佳答案

Group 在计算出可以捕获所有元素的边界框后自动设置其尺寸。

组中的对象相对于中心定位。

如果您设置宽度和高度,您将获得额外的宽度或高度散布在对象周围的效果。

如果您创建没有宽度和高度的组,您会看到该位置得到尊重。

var canvas = new fabric.Canvas('editorCnvs');

function getCell(contentTxt, fontSize, leftOffset, topOffset) {
        var cellCnt = new fabric.Text(contentTxt, {
            fontSize: fontSize
        });

        var cellGrp = new fabric.Group([cellCnt], {

            top: topOffset,
            left: leftOffset
        });

        return cellGrp;
    }
    
    var cellsArray = [];

    //It should be on top left corner
    cellsArray.push(
            getCell('A', 30,
                    0, 0));

        
    cellsArray.push(
            getCell('B', 30,
                    50, 50));

    var rowGrp = new fabric.Group(cellsArray, {

    });

canvas.add(rowGrp);
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.min.js"></script>
<canvas id="editorCnvs" width="400" height="566">
</canvas>

关于javascript - Fabricjs 组在另一个组内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36182233/

相关文章:

javascript - 如何通过外部js文件运行javascript图像幻灯片?

javascript - 如何将字符串数组值的总和绑定(bind)到 $scope

javascript - Fabricjs 克隆 Canvas 从矩形中删除小数

javascript - FabricJS:垂直对齐文本中心

javascript - JSON、Fabric 和 IText 的错误

javascript - 在uploadify中上传图片之前如何检查图片的宽度和高度?

Javascript .click() 回调函数显然没有在 Bootstrap Accordion 中调用?

javascript - 构建 Vue.js 项目时使用 Gridsome 时出现 TypeError

javascript - 如何在 vue 中设置 Fabric.js?

javascript - Fabric .js : move clipped Image behind fixed clipping-mask