Javascript 更改对象的路径和错误的边界矩形

Javascript 更改对象的路径和错误的边界矩形,javascript,canvas,fabricjs,Javascript,Canvas,Fabricjs,var canvas=newfabric.canvas('canvas'); 画布设置宽度(500); 画布设置高度(500); canvas.setBackgroundColor(“#ccc”); canvas.allowtouchcrolling=true; 变量行=新结构路径('M100350 Q200100 300350'{ 填写:'', 笔划:“红色”, 冲程宽度:5, objectCaching:false }); var circle=新结构。circle({ 半径:15, 填充:

var canvas=newfabric.canvas('canvas');
画布设置宽度(500);
画布设置高度(500);
canvas.setBackgroundColor(“#ccc”);
canvas.allowtouchcrolling=true;
变量行=新结构路径('M100350 Q200100 300350'{
填写:'',
笔划:“红色”,
冲程宽度:5,
objectCaching:false
});
var circle=新结构。circle({
半径:15,
填充:“蓝色”,
lockScalingY:是的,
lockScalingX:对,
左:300,,
top:350
});
画布。添加(线、圆);
canvas.on('对象:移动',函数(事件){
var path=canvas.item(0);
path.path[1][3]=event.target.left;
path.path[1][4]=event.target.top;
path.setCoords();
canvas.calcOffset();
canvas.renderAll();
});

您实际上可以重新计算边界框,但您必须自己进行

因此,实际上很棘手,您需要从path中删除当前pathOffset,然后调用内部方法重新计算bbox

它可以工作,但作为一个内部方法和不受支持的特性,它可能在将来被更改

var canvas=newfabric.canvas('canvas');
画布设置宽度(500);
画布设置高度(500);
canvas.setBackgroundColor(“#ccc”);
canvas.allowtouchcrolling=true;
变量行=新结构路径('M100350 Q200100 300350'{
填写:'',
笔划:“红色”,
冲程宽度:5,
objectCaching:false
});
var circle=新结构。circle({
半径:15,
填充:“蓝色”,
lockScalingY:是的,
lockScalingX:对,
左:300,,
top:350
});
画布。添加(线、圆);
canvas.on('对象:移动',函数(事件){
var path=canvas.item(0);
path.path[1][3]=event.target.left;
path.path[1][4]=event.target.top;
path.pathOffset=null;
路径。_setPositionDimensions({});
path.setCoords();
canvas.calcOffset();
canvas.renderAll();
});