Android自定义控件系列——Path类全解析
Path构造方法public Path();public Path(Path src);通用APIset(Path src);//构造或者设置一个Path对象moveTo(float x, float y);//路径绘制的起点,从点(x, y)开始进行绘制lineTo(float x, float y);//直线的结束点,又是下一次绘制直线路径的开始点rM...
·
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 //顺时针方向
更多推荐
已为社区贡献3条内容
所有评论(0)