d3.js的问题 - 缩放路径形状

时间:2013-08-30 15:52:52

标签: svg path d3.js scale shape

我正在努力扩大这个讲话泡泡的存在。我不确定该怎么做,因为默认的d3比例正在改变它开始绘制的区域。

var svgHeight = 1000
var svgWidth = 1000
var floatycircleRadius = 30
var textColor = "#FFFFFF"

var svg = d3.select("body").append("svg")
    .attr("width", svgHeight)
    .attr("height", svgWidth)


var floatycontainer = svg.append("g");

var floatygroup = floatycontainer.append("g")

var floatypath = floatygroup.append("path")
    .attr("d", "m125.512,0h-66C26.645,0,0,26.482,0,59.35c0,28.574,20.142,52.312,47,58.029V145l26.283-26.283, l52.229,0.064c32.868,0,59.512-26.563,59.512-59.431S158.38,0,125.512,0z")
    .style("fill", "#90C4E4")

floatygroup.attr("transform", "translate(500, 500)")

floatycontainer.attr("transform", "scale(1)");

floatycontainer.transition().duration(2000).attr("transform", "0")

2 个答案:

答案 0 :(得分:3)

transition.attrTween(name, tween)<g>元素上使用<path>

.attrTween("transform", function(d, i, a) {
    return d3.interpolateString(a, 'scale(1)');
});

http://jsfiddle.net/Wexcode/2jFP5/

答案 1 :(得分:1)

所以问题不在于我无法将项目扩大。当项目进行缩放时,由于路径上的混合相对和绝对点,“M”属性也在移动并且svg元素在页面上飞行。

手动将线更改为所有亲戚后,我可以完成我的项目,我找到了一个javascript脚本来更改所有相对路径。然后我可以手动将“M”属性更改为0,这样比例就可以正常工作(Convert SVG Path to Relative Commands)。

我修改了脚本以更好地满足我的需求,并使用gist.github.com和bl.ocks.org构建这个简单的页面,因此它是一个获取所有相对路径的简单站点。它符合我的长期用例,我想我会为那些感兴趣的人分享它。谢谢你的帮助。

http://bl.ocks.org/TheMcMurder/6393419(要转换的实时页面)