2012-07-11 68 views
0

我想創建一個Gizmo來編輯SVG對象。 現在,我正在嘗試解決的問題是: 我有一個對象。 Gizmo出現在對象周圍,因此對象可以縮放,翻譯和旋轉。我需要做的是按原樣查找對象的邊框,因爲這個Gizmo應該總是顯示爲:http://s16.postimage.org/kipdum2v9/example.png (如果有人漫步,粉紅色是對象,黑色筆劃是Gizmo)SVG元素的「原樣」邊框

P.S.請不要暗示使用現有的編輯器。

+0

您可以發佈您用於爲對象和Gizmo生成SVG的代碼嗎? – 2012-07-11 16:22:15

+0

@ user852798代碼很複雜,混合幷包含很多屬性,所以我不能將它剪切到這裏發佈某個部分。它有大約400條線。 Gizmo的主要思想是捕獲鼠標移動並縮放,移動或旋轉物體。所有這些都很好。我只需要知道,是否有辦法知道物體的極端點,還是應該計算它們。 – 2012-07-11 16:27:40

回答

1

我認爲您正在尋找聯繫點您的形狀與邊界框。 一般來說,你的問題似乎很難解決,也因爲SVG的形狀定義可以是模糊(過濾器等)。

只要你的形狀是路徑,一個簡單但近似的方式可以使用接口SVGPathElement的getPointAtLength方法。抽取合理的點數,並保持極值。這些應該近似於要求的點數。

也許你可以利用getBBox()返回的值來改進近似值。

+0

'getBoundingClientRect()'真的有訣竅。非常感謝! – 2012-07-12 17:46:05