C# を使用して SVG ファイルを生成したいと考えています。PNG および EMF 形式でそれらを描画するコードが既にあります (フレームワークの標準クラスSystem.Drawing.Imaging.MetafileおよびZedGraphを使用)。そのコードを SVG に適応させるために何をすることをお勧めしますか? できれば、 System.Drawing.Graphicsインターフェイスを模倣するライブラリ (無料かどうかに関係なく) を見つけたいと思います。
4 に答える
C# の SVG フレームワークと SVG-GDI+ ブリッジプロジェクトを確認してください。
上記ホームページから…
SvgGdi ブリッジは、SvgNet を使用して SVG と GDI+ 間の変換を行う一連のクラスです。これが意味することは、GDI+ を使用してグラフィックスを描画するコードは、SvgGraphics オブジェクトをプラグインするだけで、SVG も簡単に出力できるということです。このオブジェクトは、通常の .NET Graphics オブジェクトとまったく同じですが、SVG ツリーを作成します。ハッチングの塗りつぶしやライン アンカーなども実装されています。
Github で C# .NET SVG ライブラリのパブリック フォークを作成しました。
Codeplex で見つけたものよりも大幅に改善されています。ご覧になり、お好きなようにフォークしてください。
https://github.com/svg-net/SVG
編集: 2021年1月現在、お知らせします:
他の人は何年も死んでいるように見えますが、これはまだアクティブです. しかし、他の開発者の助けを借りることは間違いありません。
私はこれhttp://svg.codeplex.com/を使用しましたが、非常に満足しています。まだいくつかのバグがあるため、http://svg.codeplex.com/SourceControl/PatchList.aspxでパッチを確認する必要があります。
解決できる間違いを見つけたら、そこに直接投稿します。しかし、そこにいる人たちに評価されるには時間がかかります。パッチを見て、自分で適用することをお勧めします。
このライブラリは、ほとんどの通常のニーズに対して合理的に十分です。本当に派手なものについては、改善する必要があります...
SVG は基本的に XML ドキュメントであるため、自分で「描画」を実装できます。W3C SVG 仕様で仕様を確認してください。私は SVG 署名画像を生成するために 1 回実行しました。必要なのは、生成された画像をテストするのに数時間と Firefox だけでした。
もちろん、これは、ユーザー入力から画像を生成する場合、または別のベクター画像形式からの変換に時間を費やすことを気にしない場合に当てはまります。
PS 独自のラッパーを作成して、System.Drawing.Graphics を模倣できます。たとえば、DrawLine() を内部バッファーに追加するなどです。