矢量图像android中的PathData是矢量图形程序的脚本。它并不是完全干净且人类可读的代码作为高优先级。下面给出了如何构建 pathData 的简要想法:
在脚本中:
M 或 m (X,Y) 代表 MoveTo:移动光标到位置,大写M为绝对,小写m为相对
moveto 命令后面跟着 X、Y 坐标。
L 或 l (X,Y) 代表 LineTo:从当前位置到 X,Y 指定的位置绘制一条线。大写表示绝对坐标,小写表示相对坐标。
H 或 h (X) 代表 HorizontalLineTo:从当前光标位置到 X 指定的位置绘制一条水平线。如果该命令后面有多个 X 坐标,则将其视为多段线。 Y 坐标保持不变。
V 或 v (Y) 代表 VerticalLineTo:从当前光标位置到 Y 指定的位置绘制一条垂直线。如果该命令后面有多个 Y 坐标,则将其视为多段线。 X 坐标保持不变。
Z 或 z ClosePath:从光标的当前位置到路径的起始位置绘制一条线。没有任何参数。
C(绝对) c(相对)代表曲线到:使用 (x1,y1) 作为曲线开头的控制点,使用 (x2,y2) 作为从当前点到 (x,y) 的三次贝塞尔曲线曲线末端的控制点。 C(大写)表示后面跟随的是绝对坐标; c(小写)表示后面跟随的是相对坐标。可以指定多组坐标来绘制多边形贝塞尔曲线。在命令结束时,新的当前点成为多边形贝塞尔曲线中使用的最终 (x,y) 坐标对。如何使用 C 的图像 https://i.stack.imgur.com/pp9kY.png
S(绝对) s(相对) 速记/平滑曲线到:绘制从当前点到 (x,y) 的三次贝塞尔曲线。假设第一个控制点是第二个控制点相对于当前点在前一个命令上的反映。 (如果没有前一个命令或者前一个命令不是 C、c、S 或 s,则假定第一个控制点与当前点重合。)(x2,y2) 是第二个控制点(即曲线末端的控制点)。 S(大写)表示后面跟随的是绝对坐标; s(小写)表示后面跟着相对坐标。可以指定多组坐标来绘制多边形贝塞尔曲线。在命令结束时,新的当前点成为多边形贝塞尔曲线中使用的最终 (x,y) 坐标对。
有关更多基本想法,请参阅此链接https://medium.com/@ali.muzaffar/understanding-vectordrawable-pathdata-commands-in-android-d56a6054610e#.g4gbz1r5p https://medium.com/@ali.muzaffar/understanding-vectordrawable-pathdata-commands-in-android-d56a6054610e#.g4gbz1r5p
这里有一个很好的参考。link https://www.w3.org/TR/SVG/paths.html