2009-10-06 155 views
59

我想用C#生成一個SVG文件。我已經有了以PNG和EMF格式繪製它們的代碼(使用框架的標準類System.Drawing.Imaging.MetafileZedGraph)。你可以推薦做些什麼來使代碼適應SVG?最好我想找一些能模仿System.Drawing.Graphics界面的庫(免費或不可用)。在.NET/C#中繪製SVG?

+28

非常有建設性的問題!,爲什麼地球上這是封閉的? – 2013-12-10 11:54:40

+2

@gyozokudor:要求推薦圖書館/工具的問題在此處關閉......這是在問題提交時尚未實施的政策。如果您想討論這項政策,請前往meta.stackexchange.com。 – liori 2013-12-10 13:45:20

+11

我不知道該怎麼討論這個問題,在我看來,應該允許這樣的問題。 – 2013-12-10 14:47:29

回答

35

查看SVG framework in C# and an SVG-GDI+ bridge項目。

從上面的網頁...

的SvgGdi橋是一組使用SvgNet到 SVG和GDI +之間的轉換類 。這意味着使用GDI +繪製 圖形的任何代碼都可以很容易地將SVG輸出爲 ,只需插入 SvgGraphics對象即可。此對象與 圖形對象完全相同,但創建了SVG 樹。甚至像陰影填充 和線錨都實現。

+4

爲您的高級Google-fu +1。 – MusiGenesis 2009-10-06 13:03:10

+1

+1,我的google-fu沒有找到這個。 – liori 2009-10-06 13:04:33

+0

這似乎是主要的項目頁面:http://www.jbrowse.com/svgnet/。看起來圖書館還沒有開發6年。我可能還會檢查它。 – liori 2009-10-06 13:20:32

7
+0

-1,問題是關於從SVG導出PNG。 SVGPad是一個編輯器,它與文章無關,應用程序和庫都無法做到這一點。 (如果是這樣,你應該留下的不僅僅是一個鏈接) – DevTheo 2012-02-07 15:17:50

+0

@DevTheo:你可能想更仔細地閱讀這個問題和鏈接的文章。 OP不會嘗試將PNG轉換爲SVG; OP具有將原語繪製成PNG和EMF格式的代碼,並且希望將其用於SVG格式。我鏈接的樣本提供了完全相同的代碼。 – MusiGenesis 2012-02-07 15:26:35

+0

好的,對不起..我把我的問題推到了問題上..抱歉..我無法重新投票...我錯過了那個點.. – DevTheo 2012-02-09 15:44:09

3

由於SVG基本上是一個XML文檔 - 可以實現 「繪圖」 自己。檢查W3C SVG spec的規格。我曾經做過一次生成SVG簽名圖像,所花費的時間只有幾個小時,並且使用Firefox來測試生成的圖像。

當然,這適用於從用戶輸入生成圖像或者如果您不介意花時間從其他矢量圖像格式進行轉換的情況。

P.S.您可以創建自己的包裝來模仿System.Drawing.Graphics,例如DrawLine()附加到內部緩衝區等。

+4

現在的問題是時間問題:我們希望在這項任務上花費盡可能少的時間,而SVG支持對我們來說並不重要。因此,我們正在尋找可能被用作GDI API的原地替換的東西......或者至少是不需要太多適應的東西。我們已經考慮過您的建議。 – liori 2009-10-06 13:34:20

+0

我明白了。然後SDX2000的建議是最合乎邏輯的方法( - 。 – Audrius 2009-10-06 13:50:49

+7

好吧,我只是放了一年的休假,所以我可以實現。 – 2010-01-05 04:02:12

7

我用這個http://svg.codeplex.com/,我對它很滿意。仍然有一些錯誤,所以你應該看看在http://svg.codeplex.com/SourceControl/PatchList.aspx補丁。

當我發現我可以解決的錯誤,我直接發佈在那裏。但是那裏的人需要一些時間來評估。查看補丁並自行應用它是一個更好的主意。

該庫對於大多數通常的需求來說足夠合理。對於真正花哨的東西,它需要被改進以爲...

17

我們已經在github上製作了一個C#.NET SVG庫的公共叉。

它是非常在一個你在CodePlex上找到改進,請看看和叉它,只要你喜歡:

https://github.com/vvvv/SVG

編輯: 只是爲了讓你知道,在12月的2014年:

雖然其他人似乎已經死了多年,這仍然是活躍的。但我們絕對可以使用其他開發人員的一些幫助。

+2

太棒了!我使用原始的SVG組件,然後找到這篇文章,在幾秒鐘內運行更新的組件!謝謝! – 2013-06-19 16:53:26