2012-03-16 2 views
3

ポイント(0,100)から(100,100)までの水平パスのtotalLengthが200で、BBox幅が100である理由は誰にでも分かりますか?ここで Raphael js - gettotalLength()とgetBBox.width

はコードです:

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

答えて

2

我々が意図的にパスから省略側面の一つと正方形のパスを描画しようとすると、この質問への回答が最もよく例示されています。

パスの属性(d)にその辺の1つが含まれていない1つのユーザー単位の四角形を描画したいとします。だから我々はr.path('M0 0L1 0L1 1L0 1Z')を得るでしょう。またはr.path(M0 0 1 0 1 1 0 1)。ここでは、正方形の最後の側を明示的に描画していません。

パスのgetTotalLengthは3を返しますが、4を返します。これは、パスの最後のポイントからパスの最初のポイントまでのパスをペンが閉じる必要があるためです(zのジョブ) 。パスのd属性の末尾にzを指定しなくても、ペンはそのパスの最後のポイントから白いインクストロークのパスの最初のポイントまで移動します。したがって、描画されるパスの総数は、黒いインクの四角形の3辺と白いインクの四角形の1辺です。そのため、4が返されます。同じことが行に適用されます。

+0

素敵な説明をありがとう! :) – user1028180

関連する問題