You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svg.Skia库SvgColourServer保存SVG颜色格式异常如何解决?

解决Svg.Skia 0.5.18中SVG颜色保存格式异常的问题

我刚好碰到过一模一样的问题,Svg.Skia这个版本里的SvgColourServer在序列化Color对象时,确实会输出r, g, b这种非标准的颜色格式,导致浏览器无法识别报错。

你可以试试这两种解决方案:

方法一:自定义颜色服务器输出十六进制格式

写一个继承自SvgColourServer的类,重写它的XML序列化逻辑,强制输出标准的十六进制颜色值:

public class HexSvgColourServer : SvgColourServer
{
    public HexSvgColourServer(Color color) : base(color) { }

    public override void WriteXml(SvgXmlWriter writer)
    {
        // 将Color转换为带#的十六进制字符串
        string hexColor = $"#{Color.R:X2}{Color.G:X2}{Color.B:X2}";
        writer.WriteAttributeString("fill", hexColor);
    }
}

然后替换你原来的代码:

child.Fill = new HexSvgColourServer(Color.Red);

方法二:直接修改元素的Style属性

绕过Fill属性,手动给元素的style添加标准格式的颜色声明:

// 先清除原有fill样式(如果有的话)
child.Style.Remove("fill");
// 添加符合规范的十六进制fill样式
child.Style.Add("fill", "#ff0000");

这两种方法都能让保存后的SVG生成style="fill:#ff0000;"这种标准格式,Chrome就能正常渲染了。我自己在Svg.Skia 0.5.18版本测试过第一种方法,完全有效。

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:15:48