【问题标题】:Creating an SVGIcon using a valid svg xml with SVGSalamander使用有效的 svg xml 和 SVGSalamander 创建 SVGIcon
【发布时间】:2014-08-18 17:18:32
【问题描述】:

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

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

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

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

是否可以使用 SVG Salamander 库来做到这一点。

【问题讨论】:

    标签: java swing svg svg-salamander


    【解决方案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()));
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 2020-02-10
      • 2019-06-19
      • 1970-01-01
      • 2016-11-25
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多