我有一个 .xml 文档,它是一个有效的 SVG 图像。
我想用不同的颜色加载这个图标。但我不能。
作为解决方案,首先我将 xml 文件作为字符串读取并使用简单的 String.replace() 替换颜色
现在我必须使用我的新 XML 内容创建一个 SVGIcon。
是否可以使用 SVG Salamander 库来做到这一点。
我有一个 .xml 文档,它是一个有效的 SVG 图像。
我想用不同的颜色加载这个图标。但我不能。
作为解决方案,首先我将 xml 文件作为字符串读取并使用简单的 String.replace() 替换颜色
现在我必须使用我的新 XML 内容创建一个 SVGIcon。
是否可以使用 SVG Salamander 库来做到这一点。
使用 SVG 蝾螈:
从缓存中获取图表并调用递归搜索和替换:
SVGDiagram diagram = SVGCache.getSVGUniverse().getDiagram(uri);
setStroke(Color.BLACK, getHexString(Color.GREEN), diagram.getRoot());
功能代码:
private void setStroke(Color fromColor, String toColor, SVGElement node) throws SVGException {
if (node.hasAttribute("stroke", AnimationElement.AT_CSS)) {
StyleAttribute abs = node.getStyleAbsolute("stroke");
Color was = abs.getColorValue();
if (was.equals(fromColor)) {
abs.setStringValue(toColor);
}
}
for (int i = 0; i < node.getNumChildren(); ++i) {
setStroke(fromColor, toColor, node.getChild(i));
}
}
private String getHexString(Color color) {
return String.format("#%06x", (0xFFFFFF & color.getRGB()));
}