所以我需要在我的应用中使用路径数据, 有没有办法将您已有的图像转换为路径数据?
或唯一的方法是使用Photoshop等自己实际计算所有像素。?
答案 0 :(得分:24)
矢量图像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(相对)曲线:绘制从当前点到(x,y)的立方贝塞尔曲线,使用(x1,y1)作为曲线起点的控制点和(x2, y2)作为曲线末端的控制点。 C(大写)表示将遵循绝对坐标; c(小写)表示将遵循相对坐标。可以指定多组坐标来绘制多面体。在命令结束时,新的当前点成为polybézier中使用的最终(x,y)坐标对。 image of how to use C
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
这也是一个很好的参考。 link
答案 1 :(得分:23)
假设您正在引用VectorDrawable的pathData元素,如果您有.svg
格式的图像,则可以轻松转换它们。
直接在Android Studio中右键单击drawable文件夹,然后单击New> Vector Asset并导入本地SVG文件:
或者使用其他转换器,例如svg2android(您可能会发现这适用于Android Studio无法转换的文件)。
如果您不想要VectorDrawable并且只想获取pathData,则可以在文本编辑器中打开SVG。如果您拥有的图像不是矢量格式,那么事情会更加困难。