如何使用变换和矩阵获取SVG中元素的实际x / y位置

时间:2012-01-13 13:04:10

标签: javascript matrix svg transform

我需要获取SVG中这样写的元素的x / y位置:

<g transform="scale(10,10)" id="g6558">
    <text transform="matrix(1,0,0,-1,236.532,417.253)" id="text6560">
        <tspan x="0 4.448" y="0" id="tspan6562">10</tspan>
    </text>
</g>

在这种情况下,如何获取tspan元素的当前位置?我必须手动计算它们,因为我无法使用getBBox()或其他本机函数,因为我使用Flash包装器来显示SVG(http://code.google.com/p/svgweb/)它只支持基本属性,标签名称等。

如何在元素的x / y位置上计算矩阵和变换?

1 个答案:

答案 0 :(得分:7)

除了我理解你的问题之外,你需要知道元素转换后的x和y坐标。

在数学上,所有变换都可以表示为以下形式的3x3变换矩阵:

a   b   e
c   d   f
0   0   1

由于在上述3x3矩阵中仅使用了六个值,因此变换矩阵也表示为向量:[a b c d e f]。 a和d分别负责x和y的缩放,而e和f分别给出x和y中的平移轴。 所以在您的代码中

     <text transform="matrix(1,0,0,-1,236.532,417.253)" id="text6560">
      <tspan x="0 4.448" y="0" id="tspan6562">10</tspan>
    </text>

元素文本在y轴的x轴417.253中被翻译为236.532。 所以tspan x点变为236 .. + 4.4 ..和y点417 .. + 0。