【发布时间】:2020-04-12 03:42:05
【问题描述】:
我正在使用 Svg.Core 库(版本 3.0.49.2)将 SVG(以字符串定义)渲染为 PNG 图像。无论我做什么,任何形状似乎都是用黑色笔触和黑色填充来渲染的。
以下是我用于一个简单矩形的代码,例如:
var svgString = @"<svg width=""300"" height=""300"" xmlns=""http://www.w3.org/2000/svg"" xmlns:xlink=""http://www.w3.org/1999/xlink""><rect x=""5"" y=""5"" height=""90"" width=""50"" fill=""#ef0000"" stroke=""#00ef00"" /></svg>";
var svgDocument = SvgDocument.FromSvg<SvgDocument>(svgString);
var bitmap = svgDocument.Draw();
bitmap.Save(fileName, ImageFormat.Png);
最终渲染一个具有正确高度和宽度的矩形,但全黑:
我看到很多帖子提到了不同版本的内联样式,但是无论我使用的是 style="" 方法还是 fill="",问题仍然存在。似乎也没有指定填充颜色或使用标准颜色名称而不是 RGB 值。
感谢任何帮助或想法!
【问题讨论】:
-
只有一个问题:您不需要对字符串中的八字形 (#) 进行编码吗?
-
感谢@enxaneta,但我不这么认为——仅适用于 URL,不适用于代码中的字符串。我也试过像“绿色”、“红色”和“透明”这样的标准名称,没有任何变化
-
作为一项更新,对于任何面临同样挑战的人来说,它看起来就像 SVG 库忽略了 SVG 定义中关于填充和描边的所有内容。如果您在其周围添加以下内容:
svgDoc.Color = new SvgColourServer(Color.DarkGreen); svgDoc.StopColor = new SvgColourServer(Color.DarkGreen); svgDoc.Stroke = new SvgColourServer(Color.DarkGreen); svgDoc.Fill = new SvgColourServer(Color.DarkGreen);,您将在 SVG 中获得颜色。仍在深入研究。