我的缩放有些问题。我发现这种缩放的方法是 2x翻译和 1x缩放:
g.transition()
.duration(750)
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")");
这很有效。但我想通过使用缩放命令来保存缩放状态,例如所以我尝试了以下方式:
zoom.translate([width / 2, height / 2]);
zoom.scale(k);
zoom.translate([-x, -y]);
g.transition()
.duration(750)
.attr("transform", "translate(" + zoom.translate() + ")scale(" + zoom.scale() + ")");
但是这样zoom.translate([width / 2, height / 2]);
完全被忽略了,因为我已经覆盖了它。
但是如何使用缩放命令来解决我的问题?
如何将两个翻译语句都写成一个。这有可能吗?
关于此的一些有用链接:
答案 0 :(得分:1)
我用以下内容解决了 - 非常令人毛骨悚然的解决方案。它运作良好,但对我来说它看起来非常难看,并且基于在特殊变量中保存转换:
var currentzoomy = d3.transform("translate(" + width / 2 + "," + height / 2 + ")scale(" + k + ")translate(" + -x + "," + -y + ")")
zoom.scale(currentzoomy.scale[0]);
zoom.translate(currentzoomy.translate);
这是一个好的解决方案吗?也许有人现在更清楚我的问题是什么。 =)