【发布时间】:2014-08-18 17:18:32
【问题描述】:
我有一个 .xml 文档,它是一个有效的 SVG 图像。
我想用不同的颜色加载这个图标。但我做不到。
作为解决方案,我首先将 xml 文件作为字符串读取并使用简单的 String.replace() 替换颜色
现在我必须使用我的新 XML 内容创建一个 SVGIcon。
是否可以使用 SVG Salamander 库来做到这一点。
【问题讨论】:
标签: java swing svg svg-salamander
我有一个 .xml 文档,它是一个有效的 SVG 图像。
我想用不同的颜色加载这个图标。但我做不到。
作为解决方案,我首先将 xml 文件作为字符串读取并使用简单的 String.replace() 替换颜色
现在我必须使用我的新 XML 内容创建一个 SVGIcon。
是否可以使用 SVG Salamander 库来做到这一点。
【问题讨论】:
标签: java swing svg 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()));
}
【讨论】: