2017-08-10 4 views
-1

私は3つのパスを含むInkscapeを使ってプレーンなSVGファイルを生成しました。 (それはの終わりになぜなら「Z」の閉鎖された私はこの閉じた経路のXY座標を抽出するために、このSVGファイルを解析するSVGファイルのパスを解釈する

<path xmlns="http://www.w3.org/2000/svg" 
     d="m 128.57143,243.79075 
      -2.85714,568.57143 
      474.28571,0 
      -31.42857,-611.42857 z" id="path2985" 
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/> 

下記.SVGファイル内のパスのいずれかを検討座標リスト)。

私は8数字を解釈する方法がわかりません。私が理解しているところでは、で示される最初の2つの数字は、パスの原点が画面の左上から128.57143右と243.79075のスクリーン座標(デカルトではありません)にあることを意味します。

残りの6つの数字はどうなりますか?前の点を基準にして移動するベクトルを示していますか?または、絶対的な画面座標ですか?

SVGファイルに示されているように、SVGファイルには通常、連続する数字の対の前にM、L、H、...の文字が付いています。 。

ただし、この場合、beginnnigの接頭辞はmで、末尾のzの間にはそのような文字はありません。この場合、デフォルト動作は何ですか?

+0

https://www.w3.org/TR/SVG/paths.html#PathData –

答えて

0

大文字のMは絶対座標を示唆します。小さなmは相対座標を意味します。位置決めはデフォルトで0,0であるため、mの最初の値はMと同じになります。

最初の座標は「m」(= moveto)として扱われます。次のものは 'l'(= lineto)として扱われます。 'm'は大文字ではないので、次のコルディナートは相対的なものとして扱われます。

それは同じのようになります。参照のために

<path xmlns="http://www.w3.org/2000/svg" 
     d="m 128.57143,243.79075 
      l-2.85714,568.57143 
      474.28571,0 
      -31.42857,-611.42857 z" id="path2985" 
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/> 

:これはのmoveToコマンドについてどのようなスペックのサイスです。 (ソース:https://www.w3.org/TR/SVG/paths.html#PathDataMovetoCommands

指定された(x、y)座標で新しいサブパスを開始します。 M(大文字) は、絶対座標が続くことを示します。 m(小文字) は、相対座標が続くことを示します。 movetoが であり、その後に複数の座標ペアが続く場合、後続のペアは で暗黙のlinetoコマンドとして扱われます。したがって、暗黙のlinetoコマンド は、movetoが相対的な場合は相対、movetoの場合は絶対的なものとなります。 は絶対的です。相対的なmoveto(m)がパス の最初の要素として現れた場合、それは絶対座標のペアとして扱われます。 このケースでは、最初のmovetoが絶対movetoとして解釈されても、後続の座標ペアは相対 として扱われます。

関連する問題