2009-10-06 29 views
59

私はC#を使用してSVGファイルを生成したいと思います。私はすでにPNGとEMF形式でそれらを描画するコードを持っています(フレームワークの標準クラスSystem.Drawing.Imaging.MetafileZedGraphを使用しています)。 SVGにそのコードを適応させるためにあなたは何をするべきですか?私はSystem.Drawing.Graphicsインターフェイスを模倣するライブラリ(無料かどうか)を見つけることをお勧めします。.NET/C#でSVGを描く?

+28

非常に建設的な質問!、なぜこれが閉じられたのですか? –

+2

@gyozokudor:図書館/道具の勧告を求める質問はここでは閉じています...これは質問が提出された時点でなかった方針です。この方針について議論したい場合は、meta.stackexchange.comにお立ち寄りください。 – liori

+11

私はそれについて話し合うべきか分からない、そのような質問が許されるべきであることは明らかである。 –

答えて

35

SVG framework in C# and an SVG-GDI+ bridgeプロジェクトをチェックしてください。上記のWebページから

...

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

+4

あなたの優れたGoogle-fuの+1。 – MusiGenesis

+1

+1、私のgoogle-fuはこれを見つけられませんでした。 – liori

+0

これはメインのプロジェクトページのようです:http://www.jbrowse.com/svgnet/。図書館は6年間開発されていないようです。私はおそらくまだそれをチェックします。 – liori

7
+0

-1、SVGからPNGをエクスポートすることに問題がありました。 SVGPadはエディタであり、アプリやライブラリがこれを行うことはできません。 (そうであれば、単なるリンク以上のものを残しておいたはずです) – DevTheo

+0

@DevTheo:質問とリンクされた記事をもっと詳しく見たいと思うかもしれません。 OPはPNGをSVGに変換しようとしていません。 OPには、プリミティブをPNG形式とEMF形式に描画するための既存のコードがあり、SVG形式に変換する必要があります。私がリンクしているサンプルは、それを正確に行うためのコードを提供しています。 – MusiGenesis

+0

ええ、申し訳ありません..問題に私の問題を押し付けました。申し訳ありません..そして私は投票を再開できません...何とかその点を逃しました。 – DevTheo

3

SVGとして基本的にはXML文書である - あなた自身を "描く" を実装することができます。仕様をW3C SVG specに確認してください。私はSVGシグネチャイメージを生成するためにこれを一度行いました。生成されたイメージをテストするためには数時間かかっていました。

もちろん、これは、ユーザーの入力から画像を生成している場合や、別のベクター画像形式からの変換に少し時間を費やしてもかまわない場合に当てはまります。

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

+4

問題は時間です:私たちはこの作業でできるだけ短い時間を過ごしたいと思います.SVGのサポートは本当に重要ではありません。したがって、私たちは、GDI APIの代わりに、あるいはあまり適応する必要のないものとして、代わりに使用できるものを探しています。あなたの提案もすでに私たちによって考慮されていました。 – liori

+0

私は参照してください。それでは、SDX2000の提案はこれに最も論理的なアプローチです( – Audrius

+7

)。私はそれを実装することができるように、1年間の安息を入れます。 –

7

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

私が間違いを発見したら、そこで直接投稿します。しかし、そこにいる人たちの評価には時間がかかります。パッチを見て、自分でパッチを適用する方が良い考えです。

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

17

githubでC#.NET SVGライブラリの公開フォークを作成しました。

それはあなたがCodePlexの上で見つける1上あまり改善されて、見て、あなたが好きなようにそれをforkしてください:

https://github.com/vvvv/SVG

編集:ちょうどあなたが知っているように 、12月のように2014:

他のものは年によって死んでいるように見えますが、これはまだ有効です。しかし、他の開発者の助けを借りても間違いありません。

+2

驚くばかり!元のSVGコンポーネントを使用していましたが、更新されたコンポーネントをわずか数秒で実行しています!ありがとう! –

関連する問題