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

How to translate matrix information into simple x and y coordinates

本文关键字:简单 坐标 转换 信息      更新时间:2023-09-26

我有一个SVG文件,我正在Illustrator中编辑。我已经使用此文件中的路径信息来使用它创建一个 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 的文档中得到了很好的解释

我听到你的问题了。当我编写SVG到拉斐尔转换器(第一个转换器之一)时,我研究了这些问题。转换器将所有变换从路径中取出,并将所有坐标从相对坐标更改为绝对坐标。在 svg 文本中,有很多东西需要你思考。我写的封面为转换文本提供了一些支持。我想你可以尝试把你的SVG通过转换器,看看它引用文本是什么javascript。转换器至少会输出几种格式,但您可能会尝试的 2 种是默认输出。转到转换器页面

仅使用默认值上传您的 SVG。当您单击"收集拉斐尔"时,将带您进入生成的交互式JavaScript。这仅处理路径以查看使用文本单击"或页面"链接完成的工作...

如果您需要帮助,我会回来查看...