2

我正在寻找最好的 SVG 到 NSBezierPath 解析器,如果类/库只需要一串 SVG 命令就可以了,这里有一个例子:

M 435.722 403.542 h -232.44 v -293 h 232.44 c 0 0 0 35.108 0 81.019 c 0.049 2.551 0.079 5.135 0.154 7.748 c -0.208 15.567 12.1 13.618 19.624 28.192 c 2.584 5.005 5.875 30.5 4.875  34.5 c -7 19 -28.707 22.875 -24.653 44.854 c 0 2.667 0 5.31 0 7.923 C 435.722 364.425 435.722 403.542 435.722 403.542 z

类/库不必解析 .svg 文件本身,但它应该能够处理所有 SVG 命令并支持相对坐标和绝对坐标(换句话说,它应该与 SVG 1.1 规范完全兼容在这里找到)。

我在网上找到了一些课程,但它们都是有限的,并且在我上面的 svg 命令中失败了。现在哪个是 NSBezierPath 解析器最好的 SVG?

4

2 回答 2

1

编写一个程序来使用 XML 解析器解析 SVG 文件。

这将为您提供路径数组,您可以将其一一输入以下代码:

https://www.touchnoc.com/one_way_ticket_from_svg_to_nsbezierpath

** 确保在上面的页面上查找 iOS 的代码。

但是,上面的代码只适用于绝对路径坐标而不是相对路径坐标。Adobe Illustrator 仅输出相对路径坐标。您可以在名为草图(http://www.bohemiancoding.com/sketch/)的程序中从 illustrator 打开您的 svg,然后导出 svg 将为您提供绝对路径坐标中的文件。

您的路径失败可能是因为它们使用的是相对坐标 - 小 c,我发现的大多数脚本都可以转换绝对坐标或大 C。

而且,你去。整个过程并不容易,但它是可行的!我说的是经验。

于 2012-01-23T16:00:38.643 回答
0

我不认为这样的东西是可用的。

但是您应该能够非常轻松地自己解析它,因为命令直接映射到NSBezierPath方法。

命令先出现也很有帮助,因此您可以执行以下操作:

  • 用空格分割成数组
  • 取第一个元素并映射到命令
  • 将下一个x元素作为参数(x取决于命令)
  • 调用匹配方法NSBezierPath

如果字符串很长,您也可以通过按流方式解析它来做同样的事情。

于 2011-10-07T04:36:11.383 回答