[英]Batik load SVG file in SVGGraphics2D
我使用蜡染画svg,并将其保存。 那工作。
但是现在我尝试加载我的svg文件并添加一些东西。
我使用此功能加载我的svg文件
private static SVGDocument loadSVGDocument(String uri) {
String parser = XMLResourceDescriptor.getXMLParserClassName();
SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
SVGDocument svgDocument = null;
try {
//svgDocument = factory.createSVGDocument(IMAGE_SVG);
svgDocument = factory.createSVGDocument(uri);
} catch (IOException e) {
System.out.println(e.getMessage());
}
return svgDocument;
}
这有SVGGraphics2D
SVGDocument svgDocument = loadSVGDocument(TEST_SVG);
SVGGraphics2D g = new SVGGraphics2D(svgDocument);
当我调试我的SVGDocument时,所有子节点都为null,并且当我生成图像时,它为空且大小为400x400
加载SVG文件时哪里出问题了?
我每个人都找到解决方案
我比较我的一代和我的文件。 首先认为我只有svg root和一个孩子g。 svg根不具有和高度
我去搜索宽度和高度
Element elSVG = svgDocument.getRootElement();
String width = elSVG.getAttribute("width");
String height = elSVG.getAttribute("height");
和根之后
NodeList nodes = elSVG.getElementsByTagName("g");
Node node = nodes.item(0);
Element el = null;
if(Node.ELEMENT_NODE == node.getNodeType()) {
el = (Element)node;
}
最后将所有内容添加到图形中
SVGGraphics2D g = new SVGGraphics2D(svgDocument);
g.setTopLevelGroup(el);
g.setSVGCanvasSize(new Dimension(Integer.parseInt(width), Integer.parseInt(height)));
这仅适用于一个要svg的孩子。 对我来说现在还可以。
而且我尝试添加其他想法,例如矩形,并且可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.