有 Java 编程相关的问题?

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

如何使用Java将SVG文件中的多个路径组合成单个路径

我正在尝试使用svg上的路径构建道路系统网络。这是我的路径示例

<path id="L4H" style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:3;" d="M 0.000668985 396.649337 L 96.301547 396.649337 " transform="matrix(0.999999,0,0,0.997983,146.307925,-282.755491)"/>
<path id="L2" style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:3;" d="M -0.0000537782 396.648548 L 94.179729 396.648548 " transform="matrix(0.999999,0,0,0.997983,18.375054,-188.44611)"/>
<path id="L1" style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:3;" d="M -0.0000537782 396.65004 L 94.179729 396.65004 " transform="matrix(0.999999,0,0,0.997983,18.375054,-210.900725)"/>
<path id="L2toL4" style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:3;" d="M -0.00207423 396.650411 L 47.728842 396.64925 " transform="matrix(0.707106,-0.70568,0.707106,0.70568,-167.917758,-72.503655)"/>
<path id="L4V" style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:3;" d="M 0.00121335 396.648763 L 60.748749 396.648763 " transform="matrix(0.000000000000000061,-0.997983,0.999999,0.000000000000000061,-250.343675,173.723867)"/>
<path id="L3toL1" style="fill:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:3;" d="M -0.000472636 396.64847 L 16.722096 396.65008 " transform="matrix(0.672672,-0.738447,0.739939,0.671316,-180.940745,-81.32762)"/>

此路径具有连接道路网络的各种顶点和边(我使用图形作为数据结构)。我的计划是调用一个开始顶点来表示L4H和结束顶点L1,得到最短路径h,从结果中,我将使用Java来获得路径。问题是,我可以为一条路径执行此操作

Element element = doc.getElementById("L14");
            pathData = element.getAttributeNode("d").getValue();
            transformMatrix = element.getAttributeNode("transform").getValue();
parser.parse(pathData);

        path = handler.getPath();
        path.getElements().forEach(System.out::println);

        String tempTransformMatrix1 = transformMatrix.replace("matrix(", "");
        String tempTransformMatrix2 = tempTransformMatrix1.replace(")", "");

        var a = tempTransformMatrix2.split(",");
        path.getTransforms()
                .add(Transform.affine(w, e, e,
                        e,f, s));
        path.setStroke(Color.BLACK);

在播放转换之前,我想将一条路线的所有路径合并为一条单独的路径。(我使用蜡染进行SVG dom解析)


共 (0) 个答案