有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用Java解析读取SVG路径

我正在用java阅读文本文件,我使用scanner类读取SVG格式的文本。我看到过推荐蜡染的答案。我想知道如何仅在SVG格式的路径数据上使用蜡染。我想计算路径,并提取可以追踪路径的点。我可以用蜡染来做这件事,而不必用蜡染来评估整个文件吗

我试图创建自己的路径解析器,但我没有足够的时间或技能来创建。我通过使用< and />拆分SVG格式的标签来评估标签,我一直在评估路径的d属性。下面是一个我需要评估的路径示例:

<html>
<body>

<svg width="10000" height="1000">
<path id="square" fill="#0000FF" 
d="M351.3,251 l-3.1-2.2c-0.3-0.2-0.3-0.5-0.1-0.8l2.2-3.1c0.2-0.3,0.5-0.3,0.8-0.1l3.1,2.2
c0.3,0.2,0.3,0.5,0.1,0.8l-2.2,3.1C355,251.1,354.6,251.2,354.3,251z"/>

</body>
</html>

我需要沿着这条路的点


共 (1) 个答案

  1. # 1 楼答案

    使用蜡染进行路径解析看起来相当简单:

    看起来您只需要创建一个实现PathHandler接口的类

    class MyPathHandler implements PathHandler
    {
      void  startPath() { ... }
      void  movetoAbs(float x, float y)
      ... etc...
      void  endPath() { ... }
    }
    

    然后做:

      PathParser parser = new PathParser();
      parser.setPathHandler(new MyPathHandler());
      parser.parse("M351.3,251 l-3.1-2.2 ... snip ... C355,251.1,354.6,251.2,354.3,251z");
      parser.doParse();
    

    每当PathParser遇到M命令等时,就会调用moveToAbs()方法

    如果这不起作用,那么我就能够在大约一分钟的谷歌搜索中找到至少四五个Java或JS中SVG路径解析代码的实例

    至于抽样部分。这要复杂得多。您将需要代码来测量二次和三次贝塞尔曲线以及圆弧的长度。后者可能涉及将弧(A/a)转换为中心参数化(规范中有关于如何实现这一点的信息)。做这一切并不是小事。如果你能在蜡染、Firefox、Chrome、Android等网站上找到它的代码,可能还有其他人已经编写的代码

    如果你在浏览器中做这件事会很容易。关于这一点,已经有人提出并回答了问题