2012-03-16 76 views
3

任何人都可以告訴我,爲什麼從點(0,100)到(100,100)的水平路徑的totalLength是200,BBox寬度是100?拉斐爾js - gettotalLength()和getBBox.width

下面是代碼:

var p = paper.path('M0 100 L100 100Z') 
console.log(p.getTotalLength(), p.getBBox().width) 
// Result 200, 100 

回答

2

回答這個問題,當我們試圖繪製一個正方形路徑與雙方從路徑故意省略了一個最好的說明。

假設我們想繪製一個用戶單位大小的正方形,其中一個邊不包含在路徑屬性(d)中。所以我們會得到r.path('M0 0L1 0L1 1L0 1Z');或r.path(M0 0 1 0 1 1 0 1)。這裏我們沒有明確地畫出廣場的最後一面。

我們預計路徑的getTotalLength返回3,但它將返回4.這是因爲筆必須關閉從路徑中最後一個點到路徑中第一個點的路徑(作業z) 。即使您未在路徑的d屬性末尾指定z,筆也會從其路徑的最後一點移動到白色筆畫路徑的第一個點。因此,繪製的總路徑是黑色墨水正方形的3邊和白色墨水正方形的一邊,這就是爲什麼它返回4.這同樣適用於線條。

+0

謝謝你的好解釋! :) – user1028180 2012-04-04 14:06:44