javascript - 与可编辑对象分组?

标签 javascript fabricjs

有没有办法在 fabric.Group 中添加可编辑的对象,以便可以移动其中一个对象?

最佳答案

注意:我没有独立测试此代码。

像这样的事情可能是一种解决方法,至少我们可以稍微检测到子对象。

var $canvas = {};
$canvas.activePaths = [];

function onMouseDown = function (options) {

    var mousePos = canvas.getPointer(options.e);
    mousePos.x = parseInt(mousePos.x);
    mousePos.y = parseInt(mousePos.y);

    var width =  canvas.getWidth();
    var height = canvas.getHeight();

    var pixels = canvas.getContext().getImageData(0, 0, width, height);
    var pixel = (mousePos.x + mousePos.y * pixels.width) * 4;

    var activePathsColor = new fabric['Color']('rgb(' + pixels.data[pixel] + ',' + pixels.data[pixel + 1] + ',' + pixels.data[pixel + 2] + ')');
    var colorHex = '#' + activePathsColor.toHex().toLowerCase();

    var activeObject = canvas.getActiveObject();
    var activePath = [];

    if(activeObject.type == 'group') {

          for (var i = 0; i < activeObject.getObjects().length; i++) {
            var path = activeObject.getObjects()[i];
            if (path.getFill().toLowerCase() == colorHex) {
                $canvas.activePaths.push(path);
            }
        }

    }

}

function warpActiveObject() {
    for(var i = 0; i < $canvas.activePaths.length; i++) {
        canvas.add(
            new fabric.Rect({
                left: $canvas.getActiveObj().left + ($canvas.activePaths[i].left),
                top: $canvas.getActiveObj().top + ($canvas.activePaths[i].top),
                fill: '',
                width: $canvas.activePaths[0].width,
                height: $canvas.activePaths[0].height,
                stroke: 'white', 
                opacity: 0.5 
            })
    );
    }
}

关于javascript - 与可编辑对象分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11180719/

相关文章:

javascript - 如何检查单选按钮是否已经与 "change"事件处理程序绑定(bind)

javascript - Highcharts极坐标显示自定义标签名称或图标

javascript - 如何 router.navigate 到 Angular 4 中的相同路线并捕获相同的事件?

events - 我们在Fabric.js中有 Canvas 修改事件吗?

javascript - Phonegap - 如何下载文件

javascript - 如何在 javascript 中使用另一个函数中的变量

javascript - 使用图像对象序列化和反序列化 Canvas (Fabricjs)

javascript - 从 json 加载后无法在 Canvas 上渲染对象

javascript - fabric.js - 重新调整尺寸后获得新高度

javascript - 在 Canvas 边界限制内移动对象