Javascript 在FabricJS中,相对于画布中心点(而不是顶部和左侧)设置对象的任何可用选项
我有一个关于移动方向改变的问题。当方向改变时,画布大小会相应地进行调整。画布中的对象在定向后的位置与定向前的位置相同(相对于画布左侧和顶部) 这将在图像中更加清晰。Javascript 在FabricJS中,相对于画布中心点(而不是顶部和左侧)设置对象的任何可用选项,javascript,angular,fabricjs,Javascript,Angular,Fabricjs,我有一个关于移动方向改变的问题。当方向改变时,画布大小会相应地进行调整。画布中的对象在定向后的位置与定向前的位置相同(相对于画布左侧和顶部) 这将在图像中更加清晰。 我想更改窗口上对象的位置:相对于画布中心调整大小,而不是向左和向上调整大小。请帮忙 您可以使用canvas.centerObject(object)在画布上居中放置对象 var canvas=newfabric.canvas('c'); var dia1=新织物。圆圈({ 半径:12, 左:0,, 排名:0, 原文:“中心”,
我想更改窗口上对象的位置:相对于画布中心调整大小,而不是向左和向上调整大小。请帮忙 您可以使用
canvas.centerObject(object)在画布上居中放置对象代码>
var canvas=newfabric.canvas('c');
var dia1=新织物。圆圈({
半径:12,
左:0,,
排名:0,
原文:“中心”,
原文:'中心',
填充:'透明',
冲程宽度:5,
笔画:“红色”,
宽度:50,
身高:50,
});
var dia2=新织物。圆圈({
半径:5,
左:0,,
排名:0,
原文:“中心”,
原文:'中心',
填充:“红色”,
宽度:50,
身高:50,
});
var targetEl=new fabric.Group([dia1,dia2]{
原文:“中心”,
原文:'中心',
});
//在画布上居中对象
canvas.centerObject(targetEl);
canvas.add(targetEl);
canvas.renderAll();
//以窗口大小为中心
$(窗口)。调整大小(函数(){
canvas.centerObject(targetEl);
canvas.renderAll();
});代码>
画布{
边框:1px实心#ccc;
}
您可能需要如下设置对象尺寸
const canvas = new fabric.Canvas('canvas');
// you can simply use
canvas.viewportCenterObject(obj);
// or if you want to center manually
const centerObject = obj => {
const center = canvas.getCenter();
const zoom = canvas.getZoom();
canvas.centerObject(obj);
obj.set({
left: center.left / zoom - obj.width / 2,
top: center.top / zoom - obj.height / 2,
});
obj.setCoords();
canvas.calcOffset();
canvas.renderAll()
};
您好@fawad mukhtar,您能用画布和一些对象制作一个活动片段吗?有了基本的可复制上下文,回答起来就容易多了。