【问题标题】:Fabric js:To make group of all objectsFabric js:对所有对象进行分组
【发布时间】:2015-11-30 18:59:50
【问题描述】:

是否有可能在fabric js中,在点击事件时将画布上存在的所有对象分组

【问题讨论】:

    标签: javascript fabricjs


    【解决方案1】:

    是的,可以在点击事件时对所有画布对象进行分组。 下面我将向您展示一个创建三个对象并在单击时对它们进行分组的示例。

    var canvas = new fabric.Canvas('c');
    canvas.backgroundColor = 'yellow';
    
    //create circle object
     var circle = new fabric.Circle({
                      radius: 20, 
                      fill: 'red', 
                      left: 100, 
                      top: 100
                    });
                canvas.add(circle);
    
    
    //create square object
    var square = new fabric.Rect({
                  left: 130, 
                  top: 140,
                  fill: 'green',
                  width: 40,
                  height: 80
                });
                canvas.add(square);
    
    canvas.renderAll();
    
    
    $('#groupthem').on('click', function(event) {
        groupthem();
     });
    
    
    var site_url =  'http://fabricjs.com/assets/1.svg';
    
    fabric.loadSVGFromURL(site_url, function(objects) { 
              var group = new fabric.PathGroup(objects, { 
              left: 165, 
              top: 100, 
              width: 295, 
              height: 211 
            }); 
            canvas.add(group); 
            canvas.renderAll(); 
              }); 
    
    
    function groupthem (){
    
        var objs = [];
        //get all the objects into an array
        objs = canvas._objects.filter(function(obj){
            return obj;
        });
    
        //group all the objects 
         var alltogetherObj = new fabric.Group(objs,{
                    top:200,left:250,
                    originX:'center',
                    originY:'center'});
    
    
        //clear previous objects
        canvas._objects.forEach(function(obj){
            obj.remove();
        });
    
        canvas.add(alltogetherObj);
        alltogether.setCoords(); 
        canvas.renderAll();
    }
    

    live jsfiddle : http://jsfiddle.net/tornado1979/y6fqj8go/

    希望有帮助,祝你好运。

    新更新的提琴手链接:http://jsfiddle.net/yogeshwari/sezxhqc4/1/

    【讨论】:

    • 它适用于单个对象,但如果添加组代替任何单个对象,它会创建额外的组。请您帮忙
    • 请展示一个 jsfiddle 来检查它,因为我不太明白你的问题。但如果你得到双组对象,你可以删除一个。告诉我
    猜你喜欢
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多