Javascript 如何在缩放期间将fabricjs边界框锁定到组
我将一些文本添加到正在缩放的画布中,当我缩放它时,文本不会停留在边界框中,而是移动到远低于或高于(取决于其缩放程度)的位置。我希望边界框停留在我附加了一些图像的文本周围 编辑:所有代码都已添加到底部 我所拥有的 我想要什么 因此,基本上我希望边界框保持在文本的中心,而不管曲线如何 注:所有字母都通过新结构添加到组中。如果有必要,请在for循环中输入文本 也可以忽略其单词的曲线Javascript 如何在缩放期间将fabricjs边界框锁定到组,javascript,canvas,html5-canvas,fabricjs,bounding-box,Javascript,Canvas,Html5 Canvas,Fabricjs,Bounding Box,我将一些文本添加到正在缩放的画布中,当我缩放它时,文本不会停留在边界框中,而是移动到远低于或高于(取决于其缩放程度)的位置。我希望边界框停留在我附加了一些图像的文本周围 编辑:所有代码都已添加到底部 我所拥有的 我想要什么 因此,基本上我希望边界框保持在文本的中心,而不管曲线如何 注:所有字母都通过新结构添加到组中。如果有必要,请在for循环中输入文本 也可以忽略其单词的曲线 var group = new fabric.Group([],{ centeredRotat
var group = new fabric.Group([],{
centeredRotation: true,
centeredScaling: true,
top: 150,
left: 150,
height: 250,
width: textWidth,
angle: 0,
// padding: -50
// adjustPosition: 'center'
});
// for each character
for (var i = 0; i < text.length; i += 1) {
// get the angular width of the text ++ added the scope spacing as well to eventually dynamically change the spacing of the letters
aw = ctx.measureText(text[i]).width * pA + ($scope.spacing/1000);
var xDx = Math.cos(a + aw / 2); // get the yAxies vector from the center x,y out
var xDy = Math.sin(a + aw / 2);
// is the text upside down. If it is flip it
if (xDy < 0) {
// sets the transform for each character scaling width if needed
transform = [-xDy * wScale, xDx * wScale,-xDx,-xDy, xDx * radius + x,xDy * radius + y];
}else{
transform = [-xDy * wScale, xDx * wScale, xDx, xDy, xDx * radius + x, xDy * radius + y];
}
if($scope.flipText === false){
var letter = new fabric.Text(text[i],{
id: 'letter',
top: -180,
left: -180,
transformMatrix: [-xDy * wScale, xDx * wScale,-xDx,-xDy, xDx * radius + x,xDy * radius + y]
});
} else if($scope.flipText === true){
var letter = new fabric.Text(text[i],{
id: 'letter',
top: -180,
left: -180,
transformMatrix: [-xDy * wScale, xDx * wScale, xDx, xDy, xDx * radius + x, xDy * radius + y]
});
}
a += aw;
group.add(letter);
group.add(circle);
}
canvas.add(group);
group.centerH();
var group=new fabric.group([]{
中心旋转:正确,
centeredScaling:正确,
排名:150,
左:150,
身高:250,
宽度:textWidth,
角度:0,
//填充:-50
//调整位置:“中心”
});
//对于每个字符
对于(var i=0;i
请添加您创建组时使用的代码。@AndreaBogazzi代码已添加到底部。我尝试过,但缺少太多变量,无法运行。不管怎么说,矩阵肯定是个问题。如果你想在织物中工作,你必须使用角度、比例、倾斜属性。@AndreaBogazzi你知道如何从变换中计算角度吗?它的数学是在我的头上更新到最新的fabric并使用fabric.util.qrDecompose()它将矩阵作为参数,并为您提供表示该变换的back-top、left、angle、skew、scale。然后使用always group.addWithUpdate而不是group.add如果你做了一把工作小提琴,我会尽力帮助你