我正在尝试实现对象对齐(即上 - 下 - 左 - 右 - CenterH - CenterV)我的代码运行良好,但我不知道如何在对象旋转时处理对齐(使用提供的代码的一部分当角度不等于 0 时对象消失,我想知道如何计算最小左偏移量才能仍然看到整个旋转的对象)。我的代码如下。
var canvas = new fabric.Canvas('a');
canvas.add(new fabric.Rect({
left: 50,
top: 50,
height: 50,
width: 50,
fill: 'red'
}));
canvas.add(new fabric.Rect({
angle: 76,
left: 180,
top: 50,
height: 50,
width: 50,
fill: 'green'
}));
canvas.add(new fabric.Rect({
left: 90,
top: 130,
height: 50,
width: 50,
fill: 'blue'
}));
canvas.renderAll();
$('.alignment').click(function() {
var cur_value = $(this).attr('data-action');
var activeObj = canvas.getActiveObject() || canvas.getActiveGroup();
if (cur_value != '' && activeObj) {
process_align(cur_value, activeObj);
activeObj.setCoords();
canvas.renderAll();
} else {
alert('Please select a item');
return false;
}
});
/* Align the selected object */
function process_align(val, activeObj) {
switch (val) {
case 'left':
activeObj.set({
left: 0
});
break;
case 'right':
activeObj.set({
left: canvas.width - (activeObj.width * activeObj.scaleX)
});
break;
case 'top':
activeObj.set({
top: 0
});
break;
case 'bottom':
activeObj.set({
top: canvas.height - (activeObj.height * activeObj.scaleY)
});
break;
case 'centerH':
activeObj.set({
left: (canvas.width / 2) - ((activeObj.width * activeObj.scaleX) / 2)
});
break;
case 'centerV':
activeObj.set({
top: (canvas.height / 2) - ((activeObj.height * activeObj.scaleY) / 2)
});
break;
}
}
我如何更新代码才能对齐旋转的对象?(检查绿色矩形上的对齐方式)
郎朗坤
鸿蒙传说
相关分类