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,您能用画布和一些对象制作一个活动片段吗?有了基本的可复制上下文,回答起来就容易多了。