Path

构造方法

public Path(); 
public Path(Path src);

通用API

set(Path src);				 //构造或者设置一个Path对象
moveTo(float x, float y);	  //路径绘制的起点,从点(x, y)开始进行绘制
lineTo(float x, float y);	  //直线的结束点,又是下一次绘制直线路径的开始点
rMoveTo(float dx, float dy);  //在绘制线终点的基础上移动(dx, dy)得到新的起始点
rLineTo(float dx, float dy);  //在上个线的终点基础上进行绘制
close();				     //将连续几条直线首尾点连接形成闭环
//移动Path或者指定的Path dst间距为dx、dy
offset(float dx, float dy, Path dst); 
offset(float dx, float dy); 
//清空Path路径中的信息    
reset();
//清除所有直线、曲线,但是保留内部数据结构,以便更好的重新使用
rewind(); 
//设置与获取Path的填充模式
setFillType(Path.FillType ft); 
getFillType();
//是否逆填充模式,主要针对setFillType的FillType.INVERSE_XXX参数判断
isInverseFillType(); 
//切换FillType逆状态
toggleInverseFillType(); 
//判断Path是否为空,true:Path不包含任何线条和曲线
isEmpty();     
//判断Path是否是一个Rect,如返回true且rec参数均不为null,则将该参数设置为path区域
isRect(RectF rect);
//计算Path所在区域并将结果写入bounds,如Path包含0或者1个点则返回(0, 0, 0, 0)
//exact无意义
computeBounds(RectF bounds, boolean exact);     
//提示路径准备加入更多的点,可以让Path对象更有效地分配存储
incReserve(int extraPtCount); 
//设置当前路径的最后一个点
setLastPoint(float dx, float dy);     
//追加路径,src为另一个已经存在的路径,追加到该路径中来
addPath(Path src, float dx, float dy);     
addPath(Path src); 
addPath(Path src, Matrix matrix);
//src		已存在path
//dx,dy		将src平移到dx,dy处,再追加
//matrix	将路径src进行矩阵变换后添加
    
//将Path进行matrix矩阵变换后保存到dst中,如果dst为null则将结果保存到当前Path中
transform(Matrix matrix, Path dst); 
transform(Matrix matrix);
    
//二阶贝塞尔曲线
quadTo(float x1, float y1, float x2, float y2);     
rQuadTo(float dx1, float dy1, float dx2, float dy2);
//x1,y1		控制点
//x2,y2		结束点
//dx1,dy1	第一个控制点,追加值
//dx2,dy2	结束点,追加值
    
//三阶贝塞尔曲线 
cubicTo(float x1, float y1, float x2, float y2, float x3, float y3); 
rCubicTo(float x1, float y1, float x2, float y2, float x3, float y3); 
//x1,y1		第一个控制点
//x2,y2		第二个控制点
//x3,y3		结束点 
    
//圆弧
addArc(RectF oval, float startAngle, float sweepAngle);
addArc(float left, float top, float right, float bottom, float startAngle, float sweepAngle);
//圆
addCircle(float x, float y, float radius, Path.Direction dir);
//椭圆
addOval(float left, float top, float right, float bottom, Path.Direction dir);
addOval(RectF oval, Path.Direction dir);
//矩形
addRect(float left, float top, float right, float bottom, Path.Direction dir); 
addRect(RectF rect, Path.Direction dir);
//圆角矩形
addRoundRect(float left, float top, float right, float bottom, float rx, float ry, Path.Direction dir);
addRoundRect(float left, float top, float right, float bottom, float[] radii, Path.Direction dir);
addRoundRect(RectF rect, float[] radii, Path.Direction dir);
addRoundRect(RectF rect, float rx, float ry, Path.Direction dir);
//圆弧
arcTo(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean forceMoveTo);
arcTo(RectF oval, float startAngle, float sweepAngle);
arcTo(RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo); 

补充:Path.FillType

FillType.WINDING  		  //默认值,取并集
FillType.EVEN_ODD 		  //取不相交区域
FillType.INVERSE_WINDING   //取Path的外部区域
FillType.INVERSE_EVEN_ODD  //取Path外部和相交的区域

补充:Path.Direction

​ 主要应用在动画路径的方向上

Path.Direction.CCW    //逆时针方向
Path.Direction.CW     //顺时针方向
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐