2013-12-15 8 views
19

का उपयोग कर कैनवास पर सभी ऑब्जेक्ट्स का चयन करें क्या किसी विशेष समय पर मौजूद सभी ऑब्जेक्ट्स को स्पष्ट रूप से चुनने का कोई तरीका है। यह सभी का चयन करने के लिए माउस का उपयोग करके आसानी से किया जा सकता है। क्या Select All नामक बटन की तरह एक कोड-समाधान है ताकि क्लिक करने से सभी कपड़े प्रकार की वस्तुओं का चयन किया जा सके और फिर मैं canvas.getActiveGroup(); का उपयोग करके उस सक्रिय समूह में परिवर्तन लागू कर सकता हूं और फिर से चालू हो सकता हूं।Fabric.js

उत्तर

29

अच्छा सवाल।

इसके लिए कोई भी निर्मित विधि नहीं है, लेकिन आप इन पंक्तियों के साथ कुछ करने के लिए की आवश्यकता होगी:

var objs = canvas.getObjects().map(function(o) { 
    return o.set('active', true); 
}); 

var group = new fabric.Group(objs, { 
    originX: 'center', 
    originY: 'center' 
}); 

canvas._activeObject = null; 

canvas.setActiveGroup(group.setCoords()).renderAll(); 

कोड स्वतः स्पष्ट होना चाहिए, और यह बहुत ज्यादा क्या हुड के नीचे हो रहा है जब आप आदि का उपयोग माउस, shift + क्लिक करें,

+2

फिर एक बिल्कुल सही कार्य समाधान में एक फ़ंक्शन के रूप में मिटा दिया गया था। बहुत बहुत धन्यवाद @ कंगैक्स! – softvar

+4

यदि कोई समूह पहले से मौजूद है तो यह कोड ऑब्जेक्ट्स कूदने की स्थिति में परिणाम देता है। यह काम करता है अगर आप इस कोड से पहले 'canvas.deactivateAll();' को कॉल करते हैं (और लाइन 'canvas._activeObject = null;' ले लें, क्योंकि इसकी अब आवश्यकता नहीं है)। – miyasudokoro

+0

हाय! Shift + को ओवरराइड करने का कोई तरीका है Ctrl + पर क्लिक करें? –

0

यह एक अधिक कॉम्पैक्ट रूप है:

canvas.setActiveGroup(new fabric.Group(canvas.getObjects())).renderAll(); 
+0

यह मेरी वस्तुओं की स्थिति कूदता है। – miyasudokoro

0
selectAllObjects() { 
    this.canvas.discardActiveObject(); 
    this.canvas.discardActiveGroup(); 

    let objects: Fabric.Object[] = this.canvas.getObjects().map(function (object: Fabric.Object) { 
     return object.set('active', true); 
    }); 

    if (objects.length === 1) { 
     this.canvas.setActiveObject(objects[0]); 
    } else if (objects.length > 1) { 
     let group: Fabric.Group = new Fabric.Group(objects.reverse(), { 
      canvas: this.canvas 
     } as any); 
     group.addWithUpdate(null); 
     this.canvas.setActiveGroup(group); 
     group.saveCoords(); 
     this.canvas.trigger("selection:created", { 
      target: group 
     }); 
    } 

    this.canvas.renderAll(); 
} 
0

"canvas.setActiveGroup" यह अब एक विकल्प नहीं है। इसे संस्करण 2.0

संबंधित मुद्दे