2013-05-27 76 views
1

有沒有可以幫助將GDI + GraphicsPath轉換爲HTML5 canvas Path的庫?或者是否必須手動運行所有GraphicsPath.PathPointsGraphicsPath.PathTypes以發出相應的HTML5代碼(如果是這樣,請分享任何提示)?如何將GDI + GraphicsPath轉換爲HTML5 canvas路徑?

+0

除非它是一個小型的1-off項目,否則我會構建一個輸入原始GraphicsPath.Add ...()方法代碼或PathPoints + PathTypes的小解析器。自從我使用GDI已經有一段時間了,但我想我記得addPie和addText是少數「非HTML畫布」的gdi路徑方法。相當簡單,不是嗎? – markE

+0

@markE它可能是一個單獨的項目,但有些路徑非常複雜(由文本創建)幷包含數千條曲線。 – SiliconMind

+0

當你說「從文本創建」時,你的意思是.AddString()還是你的意思是有人用一堆.AddCurve()創建了類似文本的路徑?順便說一下,你是否注視着PathPoints + PathTypes數據,或者你是以生成路徑的代碼開始的? – markE

回答

1

不幸的是我找不到任何有用的東西。有些人建議使用SVG作爲將曲線從GDI「傳輸」到Canvas的方式,但是我找不到適合.NET的任何體面的SVG庫。我花了相當長的時間才瞭解GraphicsPath中的數據是如何存儲的,因爲它不像您想象的那麼簡單。 This is what I've came up to

瞭解GraphicsPath的實際工作方式我已經設法使用一堆HTML5函數重新創建它:.moveTo().lineTo().bezierCurveTo()。結果非常簡潔,儘管最終的字符串構建需要一些時間,並且如果源GraphicsPath表示使用花哨字體編寫的長文本,則生成的JS文件有時包含十萬分之一千行的代碼。令人驚訝的是,Firefox處理它們時沒有問題

我不會粘貼我使用的代碼,因爲它沒什麼特別的,只要您閱讀並理解my answer from another SO question即可。