通常一个对象相对于画布的位置可以从它的.left
and .top
属性,但如果对象位于选择/组中,则这些属性将与组相关。有没有办法获得它们相对于画布的位置?
当对象位于组内时,其相对于画布的坐标将取决于组的原点(以及对象的原点)。
假设我们有这段代码,其中将一个矩形和一个圆添加到一个组中。
var canvas = new fabric.Canvas(document.getElementById('c'));
var rect = new fabric.Rect({
width: 100,
height: 100,
left: 50,
top: 50,
fill: 'rgba(255,0,0,0.5)'
});
var circle = new fabric.Circle({
radius: 50,
left: 175,
top: 75,
fill: '#aac'
});
var group = new fabric.Group([rect, circle],{
originX: 'center',
originY: 'center'
});
canvas.add(group);
canvas.renderAll();
以下是可能使组居中的三种情况:
-
组的原点设置为中心(如上面的代码所示):
如下图所示,rect.left
给出对象左侧距组中心的距离。rect.group.left
给出了组中心距画布左侧的距离。
所以矩形距画布左侧的距离=rect.left + rect.group.left
(http://jsfiddle.net/uue3hcj6/3/ http://jsfiddle.net/uue3hcj6/3/)
-
组的原点设置为顶部/左侧(也是默认设置)
rect.left
给出对象左侧距组中心的距离。rect.group.left
给我们组的左侧到画布左侧的距离。现在要计算剩余距离,我们必须添加组宽度的一半。
所以矩形距画布左侧的距离=rect.left + rect.group.left
+ rect.group.width/2
(http://jsfiddle.net/uue3hcj6/6/ http://jsfiddle.net/uue3hcj6/6/)
-
组的原点设置为底部/右侧
rect.left
给出对象左侧距组中心的距离。rect.group.left
给出组右侧与画布左侧的距离。现在要计算总距离,我们必须减去组宽度的一半。
所以矩形距画布左侧的距离=rect.left + rect.group.left
- rect.group.width/2
(http://jsfiddle.net/uue3hcj6/7/ http://jsfiddle.net/uue3hcj6/7/)
注意:对象也可能出现类似情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)