gpt4 book ai didi

java - 如何使用 Batik 获取坐标处的 SVG 节点

转载 作者:行者123 更新时间:2023-12-02 13:04:53 25 4
gpt4 key购买 nike

我有一个 SVG 和点(例如 (x,y) = (250,112))。 BATIK是否可以获取给定点的节点(DOM元素)?

最佳答案

我在 batik users forum 上找到了答案由用户 templth 开发,我不承担任何责任,我只是在这里重新发布解决方案,以便它可以有更多的曝光。

public Element elementAtPosition(Document doc, Point2D point) {
UserAgent userAgent = new UserAgentAdapter();
DocumentLoader loader = new DocumentLoader(userAgent);
BridgeContext context = new BridgeContext(userAgent, loader);
context.setDynamicState(BridgeContext.DYNAMIC);
GVTBuilder builder = new GVTBuilder();
GraphicsNode rootGraphicsNode = builder.build(context, doc);

// rootGraphicsNode can be offseted relative to coordinate system
// that means calling this method on coordinates taken directly from the svg file might not work
// check the bounds of rootGraphicsNode to determine where the elements actually are
// System.out.println(rootGraphicsNode.getBounds());

GraphicsNode graphicsNode = rootGraphicsNode.nodeHitAt(point);
if (graphicsNode != null) {
return context.getElement(graphicsNode);
} else {
// if graphicsNode is null there is no element at this position
return null;
}
}

在 Batik 1.9 上测试。此方法仅返回指定位置的最顶层元素。作为解决方法,您可以删除该元素并再次调用 nodeHitAt。

关于java - 如何使用 Batik 获取坐标处的 SVG 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44177676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com