web-dev-qa-db-ja.com

.NET / C#でSVGを描画しますか?

C#を使用してSVGファイルを生成したいと思います。 PNGとEMF形式(フレームワークの標準クラス System.Drawing.Imaging.Metafile および ZedGraph を使用)でそれらを描画するコードが既にあります。 。そのコードをSVGに適合させるために何を推奨できますか?できれば System.Drawing.Graphics インターフェイスを模倣するライブラリ(無料または無料)を見つけたいと思います。

65
liori

C#のSVGフレームワークとSVG-GDI +ブリッジ プロジェクトを確認してください。

上記のWebページから...

SvgGdiブリッジは、SvgNetを使用してSVGとGDI +の間を変換するクラスのセットです。つまり、GDI +を使用してグラフィックスを描画するコードは、SvgGraphicsオブジェクトを接続するだけで、SVGも簡単に出力できます。このオブジェクトは通常の.NET Graphicsオブジェクトとまったく同じですが、SVGツリーを作成します。ハッチング塗りつぶしやラインアンカーなども実装されています。

38
Autodidact

GithubでC#.NET SVGライブラリのパブリックフォークを作成しました。

Codeplexで見つけたものよりもはるかに改善されています。好きなように見て、フォークしてください:

https://github.com/vvvv/SVG

編集:お知らせするために、2019年6月現在:

他の人は何年も前から死んでいるように見えますが、これはまだ活発です。しかし、他の開発者からの助けを間違いなく使用できます。

24
thalm

私はこれを使用しました http://svg.codeplex.com/ と私は非常に満足しています。まだいくつかのバグがあるので、 http://svg.codeplex.com/SourceControl/PatchList.aspx のパッチをご覧ください。

間違いを発見したら解決できるので、そこに直接投稿します。しかし、そこにいる人たちによって評価されるには時間がかかります。パッチを見て、自分でパッチを適用することをお勧めします。

ライブラリは、ほとんどの通常のニーズに十分に対応できます。本当に派手なものについては、考えを改善する必要があります...

7
jdehaan

SVGは基本的にXMLドキュメントであるため、「描画」を自分で実装できます。 W3C SVG spec で仕様を確認してください。 SVG署名画像を生成するために一度行ったのは、数時間と生成された画像をテストするためのFirefoxだけでした。

もちろん、これはユーザー入力から画像を生成する場合、または別のベクター画像形式からの変換に時間を費やすことを気にしない場合に適用されます。

追伸System.Drawing.Graphicsを模倣する独自のラッパーを作成できます。内部バッファーに追加するDrawLine()など。

3
Audrius