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

标签 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() 或其他 native 函数,因为我使用 Flash-wrapper 来显示 SVG (http://code.google.com/p/svgweb/) 只支持基本属性、标签名等

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

最佳答案

正如我理解你的问题一样,你需要知道元素转换后的 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>

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

关于javascript - 如何使用转换和矩阵获取 SVG 中元素的实际 x/y 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851023/

相关文章:

javascript - 如何从点击事件中分配子元素

javascript - 如何获取视频src属性

jquery - 单击时使 SVG 可调整大小

javascript - 使用 gatsby-plugin-react-svg 从导入 svg 接收 "InvalidCharacterError: String contains an invalid character"

html - 创建一个透明箭头

javascript - 当 *ngFor 在 Angular 2 中完成时执行一个函数

javascript - 当我们的设备从纵向模式转向横向模式时, map 完全加载时是否会触发任何 map 事件?

python - 当我尝试在数据矩阵上添加一层时出了问题(python)

r - 如何将矩阵子集化为一列,维护矩阵数据类型,维护行/列名称?

arrays - Emacs 和 LaTeX : amount of columns for tables/matrices/arrays