有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过SVGSalamander使用有效的svg xml创建SVGIcon

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

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

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

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

可以用SVG蝾螈库实现这一点吗


共 (1) 个答案

  1. # 1 楼答案

    用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()));
    }