使用带有SVGSalamander的有效svg xml创建SVGIcon

时间:2014-06-27 14:37:14

标签: java swing svg svg-salamander

我有一个.xml文档,它是一个有效的SVG图像。

我想加载不同颜色的图标。但我不能。

作为解决方案,我首先将xml文件作为字符串读取,并使用简单的String.replace()替换颜色

现在我必须使用我的新XML内容创建一个SVGIcon。

使用SVG Salamander库是否可行。

1 个答案:

答案 0 :(得分:0)

使用SVG Salamander:

从缓存中获取图表并调用递归搜索并替换:

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()));
}
相关问题