मैं जिसके बाद सही ढंग से काम नहीं करता है:Fabric.js - नि: शुल्क एक आयत बनाएं
var canvas = new fabric.Canvas('canvas');
canvas.observe('mouse:down', function(e) { mousedown(e); });
canvas.observe('mouse:move', function(e) { mousemove(e); });
canvas.observe('mouse:up', function(e) { mouseup(e); });
var started = false;
var x = 0;
var y = 0;
/* Mousedown */
function mousedown(e) {
var mouse = canvas.getPointer(e.memo.e);
started = true;
x = mouse.x;
y = mouse.y;
var square = new fabric.Rect({
width: 1,
height: 1,
left: mouse.x,
top: mouse.y,
fill: '#000'
});
canvas.add(square);
canvas.renderAll();
canvas.setActiveObject(square);
}
/* Mousemove */
function mousemove(e) {
if(!started) {
return false;
}
var mouse = canvas.getPointer(e.memo.e);
var x = Math.min(mouse.x, x),
y = Math.min(mouse.y, y),
w = Math.abs(mouse.x - x),
h = Math.abs(mouse.y - y);
if (!w || !h) {
return false;
}
var square = canvas.getActiveObject();
square.set('top', y).set('left', x).set('width', w).set('height', h);
canvas.renderAll();
}
/* Mouseup */
function mouseup(e) {
if(started) {
started = false;
}
}
ऊपर तर्क एक सरल आयत ड्राइंग प्रणाली मैं fabric.js बिना इस्तेमाल से है तो मैं यह काम करता है पता , fabric.js के साथ नहीं।
ऐसा लगता है कि गणित बंद है या मैं चौड़ाई/ऊंचाई/x/y मानों के साथ गलत पैरा सेट कर रहा हूं, जैसे कि जब आप आयताकार खींचते हैं तो कर्सर का सही ढंग से पालन नहीं करता है।
किसी भी मदद की बहुत सराहना की अग्रिम धन्यवाद :)
मुझे समझ नहीं आता क्यों कपड़े नहीं है एक चयन जैसे "चयन: पूरा" जो चयन सीमाओं को संभालने के लिए गुजरता है, यह पहले से ही इस तर्क को आंतरिक रूप से संभालता है। मैं इसे प्राप्त करने की कोशिश कर रहा था और इस घटना को स्रोत कोड में जोड़ना समाप्त कर दिया। – krulik