Android图像处理之Path

来源:互联网 发布:js date 编辑:程序博客网 时间:2024/05/24 07:22

Path路径的意思,任何图形都可以用它来表示,相比于Rect、Circle、Line等它非常灵活,下面介绍Path的相关API

Path.Direction:Path的方向,有两个值CCW、CW,CCW表示逆时针,CW表示顺时针

Path.FillType:Path的填充方式,有4个取值EVEN_ODD、WINDING、INVERSE_EVEN_ODD、INVERSE_WINDING

Path.Op:当两个的Path重合时该如何处理,有5个取值:

DIFFERENCE:从path1中减去path2

INTERSECT:取path1和path2重合的部分

REVERCE_DIFFERENCE:从path2中减去path1

UNION:联合path1和path2

XOR:取path1和path2不重合的部分


Path的函数

Path():构造函数,新建一个空的Path

Path(Path src):构造函数,新建一条和src一样的Path对象

void addArc(RectF oval,floatstartAngle,float sweepAngle):在当前path上添加一段弧;该弧由oval,startAngle,sweepAngle三者共同决定

void addCircle(float x,float y,float radius,Path.Direction dir):在当前path上添加一个圆;(x,y)为圆心,radius为圆半径,dir为圆的方向

void addOval(RectF oval,Path.Direction dir):在当前path上添加一个椭圆

void addPath(Path src,float x,float y):将src平移(x,y)后添加到当前path上

void addPath(Path src):将src添加到当前path上

void addPath(Path src,Matrix m):将src经过矩阵m变换后添加到当前path上

void addRect(float left,float top,float right,float bottom,Path.Direction dir):在当前path上添加矩形

void addRect(Rect src,Path.Direction dir):同上

void addRoundRect(RectF src,float[] dii,Path.Direction dir):将圆角矩形添加到当前path,src表示矩形区域,dii={x1,y1,x2,y2,x3,y3,x4,y4}用xi,yi表示第i个角的弧度

void addRoundRect(RectF src,float rx,float ry,Path.Direction dir):将圆角矩形添加当档案path中,每个角的弧度都有rx,ry决定

void arcTo(RectF src,int startAngle,int sweepAngle,boolean forceMoveTo):将弧src添加到当前path中,forceMoveTo决定当前path最后的点到src的起始点之间是否有连线

void arcTo(RectF src,int startAngle,int sweepAngle):forceMoveTo为false

void close():闭环的当前path

void computeBounds(RectF bounds,boolean exact):得到一个能容纳档案path的矩形并存入bounds中

Path.FillType getFillType():返回path的FillType

boolean isEmpty():path是否是空的

boolean isInverseFillType():path的FillType是否是Inverse类型的

boolean isRect(Rect src):如果path是一个矩形则返回true并储存到src中,若path不是矩形则返回false

void lineTo(float x,float y):添加一条从path的末尾点到(x,y)的线段

void moveTo(float x,float y):将(x,y)设置为新的起点

void offSet(float dx,float dy,Path dst):将当前path平移dx,dy,将平移后的path保存到dst中,若dst为null则将其存到档案path中

void offSet(float dx,float dy):dst为null的情况

boolean op(Path path1,Path path2,Path.op op):将path1和path2按照op的规定处理,将新得到的path存到当前path中

boolean op(Path path,Path.op op):将path与当前path按照op处理,将新得到path存到当前path中

void reset():清空path

void rewind():清空当前path,保存数据以便快速恢复

void setFillType(Path.FillType type):设置FillType

void setLastPoint(float x,float y):设置path的最后一个点为(x,y)

void transform(Matrix matrix,Path dst):用matrix变换当前path并存到dst中

void transform(Matrix matrix):用matrix改变当前path


0 0