Javascript 拉斐尔体位

Javascript 拉斐尔体位,javascript,raphael,Javascript,Raphael,我怎样才能得到拉斐尔画中物体的位置?我可以使用getBBox()获得大小,但似乎没有办法获得位置?根据形状的不同,文档似乎说可以使用函数访问它。所以,如果它是一个圆 var x = myCircle.attr('cx'); //cx is the center-x-coordinate of the circle var y = myCircle.attr('cy'); //same, for y var r = myCircle.attr('r'); //Radius of circle.

我怎样才能得到拉斐尔画中物体的位置?我可以使用getBBox()获得大小,但似乎没有办法获得位置?

根据形状的不同,文档似乎说可以使用函数访问它。所以,如果它是一个圆

var x = myCircle.attr('cx'); //cx is the center-x-coordinate of the circle
var y = myCircle.attr('cy'); //same, for y
var r = myCircle.attr('r'); //Radius of circle.
正方形将具有x、y、宽度和高度的属性。有关更多信息,请查看文档。

getBBox()应提供位置以及x和y属性

var bbox = el.getBBox();
alert([bbox.x, bbox.y]);

也可以通过以下方式访问x和y值:

var x = myCircle.attrs.x;
var y = myCircle.attrs.y
getBBox()返回一个具有5个属性的对象。它们是:

  • x
  • y
  • 宽度
  • 高度
  • toString()
  • 如果设置getBBox(false),它将在变换后返回对象位置的坐标数据。将其设置为getBBox(true),以在转换之前返回对象的坐标

    像这样使用

    paper.Raphael(10,10,300,300);
    circle.paper( 30, 55, 15 );
    var circleBBox = circle.getBBox( false );
    

    编辑:刚刚下载了R2.1,我相信它已经在getBBox()返回的属性中添加了x2和y2。

    属性x和y都在集合中。这里的问题是,如果该集合在其他地方被转换,那么.getBBOx()中给出的x和y就不会考虑转换

    transformPath(路径,变换)可以通过应用集合具有的相同变换来提供帮助

    要转换该点,您可以:

    tp = Raphael.transformPath("M"+x+","+y, set.attr('transform'))
    x = tp[0][1]
    y = tp[0][2]
    

    el.getBBox是正确的方法。请看Dmitry的回答。谢谢,但如果你能在raphaeljs的文档中添加这些技巧,那就太好了。在Raphael文档中,问题可能首先是对象“位置”的定义。如果您指的是对象的“重心”,则当前必须由应用程序代码计算,因为它取决于对象的类型。现在,似乎没有库代码来获取常见形状的中心。对于任意形状,我想它可能需要在应用程序级别定义,并且边界框允许计算它。如果“位置”是指经典的左上角位置,则边界框的(x,y)属性就是结果,如@b_dubb所述。