2012-05-22 76 views
0

是否有方法將描邊路徑轉換爲使用javascript的形狀?是否有任何圖書館將此作爲內置功能提供?使用javascript將描邊路徑轉換爲形狀

我知道Illustrator具有此功能,因此可能的解決方案是將SVG圖像複製到屏幕上並將其移至Illustrator,但如果可以這樣做,是否會丟失所有存儲爲屬性的關聯元數據?

回答

0

使用在聖拉斐爾Element.getTotalLength()Element.getSubpath()功能與衝程寬度衝程dasharray在一個函數,路徑的屬性沿可能會得到的結果。

+0

...雖然您還需要考慮筆劃線帽和線連接選項,並實施適當的斜接限制算法。你基本上說的是「是的,有一些功能可以幫助解決這個問題。」 – Phrogz

+0

是的,我跳過了那些道具。我認爲亞歷克斯可以自己創建一個功能,也可以再問一次,如果某些東西不能按照公式本身的意圖工作。還是我自己寫了整個功能? – inhan

2

[I]有沒有辦法使用JavaScript將描邊路徑轉換爲形狀?

是的,有一種方法可以將SVG路徑筆劃轉換爲輪廓形狀。不幸的是,它不是SVG內置的預封裝函數。實現它的方式稱爲數學。您需要考慮貝塞爾曲線,斜接設置,線段,線連接和dasharrays。正如@inhan指出的,你可能會使用各種函數來幫助你,或者近似它,但是他們都不會爲你做數學。這是可能,但它不是在任何方式容易 ...在JavaScript中。

[W]有沒有辦法將svg圖像複製到屏幕上並將其移動到Illustrator中?

當然,這很容易。

  1. 在Web瀏覽器中打開基於SVG的D3.js插圖。
  2. 打開開發工具(或Firebug)。
  3. 找到你想要的元素,右鍵單擊並選擇「複製爲HTML」或「複製SVG」。
  4. 將代碼粘貼到文本編輯器中並用SVG包裝。
  5. 在Illustrator中打開SVG。
  6. 概述您想要的路徑。
  7. 另存爲SVG
  8. 複製/粘貼SVG代碼Illustrator導出到...無論你想要的位置。

但是,這對你有什麼好處?當然,這與您的D3.js可視化無關。

但是,如果你能做到這一點,你會失去所有相關的元數據存儲爲屬性?

什麼你在說什麼?如果您正在討論源代碼中的屬性,那麼如果您不將該屬性複製/粘貼到結果上,則只會丟失它。如果您正在討論綁定到在Web瀏覽器中運行的可視化文件的JavaScript數據,那麼課程如果您通過Adobe Illustrator進行往返,則將丟失數據。

你的問題對我來說意義不大,我有一種感覺,我必須錯過你的需求/目標。你在做什麼真的試圖完成?

+0

我喜歡閱讀你的回覆! FWIW,當我說屬性時,我的意思是班級,身份證,數據,你有什麼 - 所以你說得對。我真的只是有興趣創建一個多筆畫的SVG路徑,一個顏色的筆畫和一個mouseover上的第二筆畫。我在SVG規範中找不到任何信息,所以我不得不考慮將描邊路徑轉換爲形狀,以便我可以再應用第二個筆劃。 – Alex