1、Path常用方法
作用 | 相关方法 | 备注 |
移动起点 | moveTo | 移动下一次操作的起点位置 |
设置终点 | setLastPoint | 重置当前path中最后一个点位置,如果在绘制之前调用,效果和moveTo相同 |
连接直线 | lineTo | 添加上一个点到当前点之间的直线到Path |
闭合路径 | close | 连接第一个点连接到最后一个点,形成一个闭合区域 |
添加内容 | addRect, addRoundRect, addOval, addCircle, addPath, addArc, arcTo | 添加(矩形, 圆角矩形, 椭圆, 圆, 路径, 圆弧) 到当前Path (注意addArc和arcTo的区别) |
判断值 | isEmpty、isRect | 判断Path是否为空、path是否是一个矩形 |
替换路径 | set | 用新的路径替换到当前路径所有内容 |
偏移路径 | offset | 对当前路径之前的操作进行偏移(不会影响之后的操作) |
贝塞尔曲线 | quadTo, cubicTo | 分别为二次和三次贝塞尔曲线的方法 |
rXxx方法 | rMoveTo, rLineTo, rQuadTo, rCubicTo | 不带r的方法是基于原点的坐标系(偏移量), rXxx方法是基于当前点坐标系(偏移量) |
填充模式 | setFillType, getFillType, isInverseFillType, toggleInverseFillType | 设置,获取,判断和切换填充模式 |
提示方法 | incReserve | 提示Path还有多少个点等待加入(这个方法貌似会让Path优化存储结构) |
布尔操作(API19) | op | 对两个Path进行布尔运算(即取交集、并集等操作) |
计算边界 | computeBounds | 计算Path的边界 |
重置路径 | reset, rewind | 清除Path中的内容 reset不保留内部数据结构,但会保留FillType. rewind会保留内部的数据结构,但不保留FillType |
矩阵操作 | transform | 矩阵变换 |
2、addArc和arcTo,addArc是arcTo参数forceMoveTo=true时的方法
3、当paint为FILL或者FILL_AND_STROKE,path调用addxxx方法,最后设置setFillType方法,会形成不同的图形
- addXXX参数中的Direction表示路径的方向:顺时针(CW)、逆时针(CCW)---------用于setFillType
- FillType四中方式:EVEN_ODD(奇数填充),WINDING(不等0填充)、INVERSE_EVEN_ODD(偶数填充)、INVERSE_WINDING(等于0填充)--------在图形中随意找一个点任意方向射出一条射线,这条射线和图形相交(相切不算)的次数为奇数或偶数;在图形中随意找一个点任意方向射出一条射线,以0为初始值,对于射线和图形的所有交点,遇到每个顺时针的交点结果加1,逆时针结果减1
4、二阶的贝塞尔曲线为两个数据点和一个控制点,三阶的贝塞尔曲线为两个数据点和两个控制点
5、rxxx为相对坐标系
6、布尔操作5种:DIFFERENCE(差集1-2)、REVERSE_DIFFERENCE(差集2-1)、INTERSECT(交集)、UNION(并集)、XOR(异或)