拉斐尔的setViewBox()?

时间:2013-05-17 19:38:50

标签: javascript raphael

Fiddle!!

我已经设置了这个小提琴,以显示进入setViewBox()函数的参数。问题是,它的工作方式对我来说毫无意义。

为什么setViewBox(0, 0, 625, 625)会产生比setViewBox(0, 0, 1250, 1250)更大的框/进一步放大?

另外,为什么setViewBox(-100, 0, 625, 625);将图像向右调整(我希望它会因为负x值而向左移动)?

这是文档关于setViewBox(x,y,w,h)的说法:

参数:

x - 新的x位置,默认为0

y - 新y位置,默认为0

w - 画布的新宽度

h - 画布的新高度

另外,我试图找出第一个(x)/第三个(w)和第二个(y)/第四个(h)参数之间的关系,使得框从中间放大和缩小,而不是如果有人有任何建议,请从左上角扩展。

2 个答案:

答案 0 :(得分:2)

答案是传递给setViewBox的参数基本上是告诉您在对象上查看的窗口的大小。如果窗口较小,则会看到较少的对象或对象放大。如果向左移动窗口,您将看到对象相对于窗口向右移动。关键是将它视为您正在查看的窗口,而不是对象本身的大小。

答案 1 :(得分:0)

这是一个显示如何计算setViewBox值的示例,您必须包含jquery(以获取SVG cocntainer X和Y):

var original_width = 777;
var original_height = 667;
var zoom_width = map_width*100/original_width/100;
var zoom_height = map_height*100/original_height/100;
if(zoom_width<=zoom_height)
   zoom = zoom_width;
else
   zoom = zoom_height;
rsr.setViewBox($("#"+map_name).offset().left, $("#"+map_name).offset().top, (map_width/zoom), (map_height/zoom));