我首先要說的是,這可能看起來很愚蠢的問題,但SVG往往被低估(例如參見Z/ClosePath的描述命令@Mozilla dev site並將其與SVG Rec. 1.1進行比較)。什麼意思是SVG中的「初始點」和「當前點」,有什麼區別
根據:
的的 「moveTo」 命令(中號或米)建立一個新的當前點。 的效果就好像「鋼筆」被擡起並移動到新的位置。
I.e. 「當前點」是M
或m
。
Here它被寫入的是:
的「closepath」(Z或Z)結束當前子路徑,並且使自動直線要從當前點繪製到初始點當前子路徑。
那麼,我是對的,如果我假設「初始點」是當前子路徑已經開始點?但是,如果正在執行的工作是在當前子路徑上完成的,並且「當前點」== M
或m
,那麼「初始點」也應該等於M
或m
。這怎麼可能,我沒有到達這裏?
感謝Robert Longson這裏有一個解釋「當前點」和「初始點」是什麼。在我的邏輯錯誤是由清白單詞「建立」,在語句「的的‘moveTo’命令(中號或米)建立新當前點,其效果是因爲如果‘筆’引起被擡起並搬到新的位置。「即M
或m
僅在處理開始時填充此「變量」。
例如,想象路徑數據是這樣的:
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
在這裏面,m1
將填充current_point
變量,也將樹立新的initial_point
。之後,處理將轉到下一個繪圖命令時,current_point
將成爲該命令的最後一個點。例如。 (V
是指向當前處理狀態的指針):
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
initial_point = current_point = m1
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
current_point = c11.last_point
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
current_point = c12.last_point
...
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
initial_point = current_point = m2
是的,它的確如此。如果你想關閉一條路徑,你基本上需要'Z'。如果您在最後重複第一點,您可以達到相同的行爲。 – Sirko
如果路徑上沒有標記,則爲true。 –
@「如果你在最後重複第一點,你可以達到同樣的行爲。「好吧,這不完全正確:」當子路徑以「** closepath **」結尾時,它**的行爲與「**手動**」通過「lineto」關閉子路徑時發生的行爲不同**命令中'stroke-linejoin'和'stroke-linecap'的執行情況。「 – 8day