3

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 が大きくなり、マイナーな変更が行われると遅すぎます。再解析せずに、テキストをすぐにレンダリングできるようにするためにできることはありますか?

4

2 に答える 2

1

私は同じ問題に出くわし、それを理解するのに時間がかかりました。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>されます。これは正しいように思えます。

于 2016-08-18T01:18:37.913 に答える