0

小提琴!!

我已经设置了这个小提琴来显示 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)参数之间的关系,以便框从中间放大和缩小,而不是从左上角,如果有人有任何建议。

4

2 回答 2

2

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

于 2013-09-16T15:34:56.083 回答
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));
于 2013-05-27T14:28:47.147 回答