vvvv/SVG 不渲染文本
vvvv/SVG not rendering text
我正在尝试在我的 C# 项目中使用 vvvv/SVG 库(https://github.com/vvvv/SVG,当前版本)。我设法做了一些简单的绘图,但是在渲染文本时以奇怪的行为结束。
以下代码将文本元素添加到 SvgDocument,但没有文本呈现在位图中。
this.SvgDoc = new SvgDocument();
this.SvgDoc.Width = new SvgUnit(400);
this.SvgDoc.Height = new SvgUnit(400);
SvgText txt = new SvgText("TEST");
txt.X.Add(new SvgUnit(100));
txt.Y.Add(new SvgUnit(100));
//txt.FontFamily = "Arial";
txt.FontSize = new SvgUnit(15);
txt.Fill = new SvgColourServer(Color.Black);
this.SvgDoc.Children.Add(txt);
var bmp2 = this.SvgDoc.Draw();
this.PBoxRes.Image = bmp2;
如果我尝试添加例如。圆形节点,它呈现正常。在我将 svg 存储到字符串之前,文本不会呈现,用 SvgDocument.FromSvg() 解析它并在之后呈现位图。这是有效的,但是对于较大的 SVG 和较小的更改来说太慢了。我可以做些什么来使文本可以立即呈现,而无需重新解析?
尝试添加这个:
SvgContentNode newContent = new SvgContentNode();
newContent.Content = "Text";
txt.Nodes.Add(newContent);
我偶然发现了同样的问题,我花了一些时间才弄明白。似乎 SvgText
需要子项才能包含在生成的 .svg 文件的 XML 中。
对我来说,将文本作为嵌套内容节点包含在内就成功了:
new SvgDocument
{
Width = 100,
Height = 100,
FontSize = 10,
Nodes =
{
new SvgText
{
Nodes = {new SvgContentNode {Content = "my text"}},
X = {10},
Y = {10}
}
}
}
我不确定这是否是添加文本的最佳方式,但它会在生成的 .svg 文件中创建 XML 标记 <text x="10" y="10">my text</text>
,这对我来说似乎是正确的。
我正在尝试在我的 C# 项目中使用 vvvv/SVG 库(https://github.com/vvvv/SVG,当前版本)。我设法做了一些简单的绘图,但是在渲染文本时以奇怪的行为结束。
以下代码将文本元素添加到 SvgDocument,但没有文本呈现在位图中。
this.SvgDoc = new SvgDocument();
this.SvgDoc.Width = new SvgUnit(400);
this.SvgDoc.Height = new SvgUnit(400);
SvgText txt = new SvgText("TEST");
txt.X.Add(new SvgUnit(100));
txt.Y.Add(new SvgUnit(100));
//txt.FontFamily = "Arial";
txt.FontSize = new SvgUnit(15);
txt.Fill = new SvgColourServer(Color.Black);
this.SvgDoc.Children.Add(txt);
var bmp2 = this.SvgDoc.Draw();
this.PBoxRes.Image = bmp2;
如果我尝试添加例如。圆形节点,它呈现正常。在我将 svg 存储到字符串之前,文本不会呈现,用 SvgDocument.FromSvg() 解析它并在之后呈现位图。这是有效的,但是对于较大的 SVG 和较小的更改来说太慢了。我可以做些什么来使文本可以立即呈现,而无需重新解析?
尝试添加这个:
SvgContentNode newContent = new SvgContentNode();
newContent.Content = "Text";
txt.Nodes.Add(newContent);
我偶然发现了同样的问题,我花了一些时间才弄明白。似乎 SvgText
需要子项才能包含在生成的 .svg 文件的 XML 中。
对我来说,将文本作为嵌套内容节点包含在内就成功了:
new SvgDocument
{
Width = 100,
Height = 100,
FontSize = 10,
Nodes =
{
new SvgText
{
Nodes = {new SvgContentNode {Content = "my text"}},
X = {10},
Y = {10}
}
}
}
我不确定这是否是添加文本的最佳方式,但它会在生成的 .svg 文件中创建 XML 标记 <text x="10" y="10">my text</text>
,这对我来说似乎是正确的。