Javascript 如何在raphael.js中定位与中心相关的对象

Javascript 如何在raphael.js中定位与中心相关的对象,javascript,plot,position,raphael,Javascript,Plot,Position,Raphael,当我将x,y值设置为对象以将其放置在图纸上时,它从左上角测量x,y。有没有办法改变它,使它的位置与纸张的中心有关?拉斐尔有矩形、圆形和椭圆 后2个使用中心坐标定位,因此您无需担心 矩形基于其左上角坐标进行定位 因此,要回答您的问题: 拉斐尔并没有提供一种精确的方法来定位具有中心坐标的矩形。但是,您可以自己轻松地进行定位。 看看这个 例如: // lets assume your center coordinates are cx and cy var rec = paper.rect(cx,

当我将x,y值设置为对象以将其放置在图纸上时,它从左上角测量x,y。有没有办法改变它,使它的位置与纸张的中心有关?

拉斐尔有矩形、圆形和椭圆

  • 后2个使用中心坐标定位,因此您无需担心
  • 矩形基于其左上角坐标进行定位
因此,要回答您的问题:

拉斐尔并没有提供一种精确的方法来定位具有中心坐标的矩形。
但是,您可以自己轻松地进行定位。
看看这个

例如:

// lets assume your center coordinates are cx and cy
var rec = paper.rect(cx, cy, 120, 80);

// to position in the middle, just do this
var rec = paper.rect(cx - 120/2, cy - 80/2, 120, 80);
就这么简单。祝你好运


编辑


如果这是您希望在项目中执行的操作,那么只需使用Raphael.js并重写rectangle类

Raphael不支持g元素。因此,您可以运行一个循环并添加属性transform=“translate(*画布宽度的一半*,*画布高度的一半*)”如下所示:

var paper = new Raphael("canvas");

var cx = 250;
var cy = 250;

var rec = paper.rect(0, 0, 250, 250).attr({fill:'red'})

var list = document.getElementById("canvas").childNodes[0].childNodes;
for(var i = 2 /*because the first two elements are desc tag*/, l = list.length; i < l; i++){
    list[i].setAttribute("transform", "translate(250,250)");
}
var paper=新拉斐尔(“画布”);
var-cx=250;
var-cy=250;
var rec=paper.rect(0,0250250).attr({fill:'red'})
var list=document.getElementById(“画布”).childNodes[0].childNodes;
for(var i=2/*因为前两个元素是desc tag*/,l=list.length;i
演示:


祝你好运:)

你确定不耍花招是不行的吗?所以没有正式的方法?当你创建一个矩形时,你启动它paper.rect(x,y,w,h,r)。看看文档:,x和y是左上角的坐标,所以不是。但是上面的解决方案非常好。你可以覆盖库中的
rect
,来做你想做的事情,但是上面的例子有什么问题吗?我想我回答了你的问题…你为什么不接受它?你误解了这个问题,这与矩形无关那么你在说什么?澄清你的问题。根据我回答后的评论,你似乎在谈论矩形。