javascript - 如何将矩阵信息转换为简单的 x 和 y 坐标

标签 javascript matrix svg raphael

我有一个 SVG 文件,正在 illustrator 中编辑。我已经使用该文件中的路径信息来创建 Raphael 对象。我现在想做的是向绘图的某些部分添加文本。问题是 Raphael 只接受 X 和 Y 坐标,而 SVG 文件中的文本是一个矩阵。

基本上我需要改变这个:

<text transform="matrix(1 0 0 1 583 562)" font-size="12">Argentina</text>

变成这样的东西:

var t = paper.text(x, y, "Argentina");

这可能吗?我也尝试过将文本变成轮廓,但生成的路径太复杂,我更喜欢更轻松的东西。

最佳答案

在您的具体情况下,矩阵仅转换为 x: 583y: 562,但如果您的元素被缩放或旋转,那么这些值将产生误导。

您可以直接在 Raphael 中应用变换矩阵,您所需要做的就是......

transformation = Raphael
     .matrix(1, 0, 0, 1, 583, 562)
     .toTransformString();

text = paper
    .text(0, 0, "Argentina")
    .attr("font-size", 12)
    .transform(transformation)​

现在,如果不喜欢对元素应用转换,您可以通过执行 console.log(transformation) 将矩阵转换为更易于阅读的格式,这将为您提供诸如 t100,100r30,100,100s2,2,100,100 之类的字符串,在 Raphael's documentation 中有很好的解释。

关于javascript - 如何将矩阵信息转换为简单的 x 和 y 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11363960/

相关文章:

svg - 如何应用 feBlend 并保留源 Alpha

Android-Glide 4.0.0-RC0 : how to set tint color for ImageView after successfully loading SVG

java - 使用 Java 和 Apache Batik 从 SVG 生成多页 PDF

javascript - 文本区域验证不起作用 Javascript

javascript - 在将新创建的 DOM 对象插入文档之前,对它使用 getElementById —— 怎么做?

javascript - WMS 图层未在所有缩放级别上正确渲染

python - 如何使用 numpy 将矩阵分成 4 个 block ?

javascript - jquery密集的文本阴影和模糊的背景颜色

r - 如何使用指定数量的随机定位的 1 制作 0/1 矩阵

python - 每行的 Bin 元素 - NumPy 的矢量化 2D Bincount