获取svg元素的边界框?

获取svg元素的边界框?,svg,batik,Svg,Batik,我想知道svg元素的边界框。从该项目的例子中可以看出: DOMImplementation impl = SVGDOMImplementation.getDOMImplementation(); String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; Document doc = impl.createDocument(svgNS, "svg", null); Element svgRoot = doc.getDocumentElement(

我想知道svg元素的边界框。从该项目的例子中可以看出:

DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
Document doc = impl.createDocument(svgNS, "svg", null);
Element svgRoot = doc.getDocumentElement();

Element rectangle = doc.createElementNS(svgNS, "rect");
rectangle.setAttributeNS(null, "x", "10");
rectangle.setAttributeNS(null, "y", "20");
rectangle.setAttributeNS(null, "width", "100");
rectangle.setAttributeNS(null, "height", "50");
rectangle.setAttributeNS(null, "fill", "red");

svgRoot.appendChild(rectangle);
现在,我尝试查找边界框:

SVGOMElement svgelt = (SVGOMElement)rectangle;
SVGRect rc = SVGLocatableSupport.getBBox(svgelt); // rc == null

查询元素边界框的正确方法是什么?

这是从几个不同的来源拼凑而成的:

Document doc = loadYerSvgDoc();
BridgeContext ctx = new BridgeContext(new UserAgentAdapter());
GraphicsNode gvtRoot = builder.build(ctx, doc);
Rectangle2D rc = gvtRoot.getSensitiveBounds();

这将给您提供边界。

不应该是
SVGLocatableSupport.getBBox(svgelt)
(而不是
(element)
?可能重复@collapsar您是对的,这是一个输入错误假设上面的“builder”是GVTBuilder的一个实例,我是否正确?