Path类
path表示路径路径可以说是弯的直的,也可是闭合的非闭合 的可以是圆的也可以是方形的,可以是单个的也可以是多个的,可以使简单的也可以是复杂的。
path用于绘制复杂图形,创建时什么也没有,只有往path中添加了具体的形状,path类才会清晰可见。绘制path的时候回所有的信息都保存在path对象中,canvas根据path对象来绘制图形。
**
path类的功能分为以下几类:往path中添加线条,往path中添加矩形、椭圆、弧线等等,往path中添加曲线和贝塞尔曲线,将path中的图形进行运算。
**
path可以绘制出奇形怪状的线条,并能将线条组合起来变成折线,闭合后就是一个多边形。
public void moveTo(flaot x,float y)//将画笔移动到点x,y的位置,使用的是绝对定位
public void rMoveTo(float x,float y)//新点在上一个点的基础上偏移x,y
public void lineTo(flaot x,float y)//将画笔移动到点xy的位置,并在上个点和当前点之间画一条线。
public void rLineTo(flaot x,float y)//新点在上一个点的基础上偏移x,y,并在两点之间绘制一条线。
public void close()在第一个点和最后一个点之间花一条直线形成闭合区域
。
如果要往path中添加图形,需要调用path中定义的一组以add开头的方法,这组方法需要传递一个类型为Path.Direction的方法这是一个枚举类型CW表示顺时针,CCW表示逆时针。
//添加矩形和圆角矩形,圆角矩形支持对四个圆角定义不同的弧度
public void addRect(RectF rect,Path.Direction dir);
public void addRect(flaot left ,float top,float right ,float bottom,Path.Direction dir);
public void addRoundRect(flaot left ,float top,float right ,float bottom,flaot[] radii,Path.Direction dir);
public void addRect(RectF rect,flaot radx,float rady,Path.Direction dir);
public void addRect(RectF rect,flaot[] radii,Path.Direction dir);
//添加椭圆,圆,弧
public void addOval(RectF rectf,Path.Direction dir)
public void addOval(flaot left ,float top,float right ,float bottom,Path.Direction dir)//添加椭圆
public void addCicle(flaot x,float y ,float radius ,Path.Direction dir)//添加圆
public void addArc(RectF rectf,flaot startAngle,float sweepAngle);
public void addArc(flaot left ,float top,float right ,float bottom,flaot startAngle,float sweepAngle);//添加弧
贝塞尔曲线是图形开发中一个重要的工具,通过三个点确定一条平滑的曲线。贝塞尔曲线是有线段和节点组成,节点是可以拖动的支点,线段像可以伸缩的皮筋。path支持二阶贝塞尔和三阶贝塞尔。
如果要绘制一条二阶贝塞尔曲线必须调用moveTo()方法定义起点,再调用
quadTo(float x1,float y1,float x2,float y2)方法来绘制贝塞尔曲线。其中x1 y1是控制点,x2 y2是终点。
绘制一条三阶贝塞尔曲线必须调用moveTo()方法定义起点,再调用cubicTo(float x1,float y1,float x2,float y2,float x3,float y3)方法来绘制贝塞尔曲线。其中x1 y1,x2 y2是控制点,x3 y2是终点。
path支持图形运算得到更加复杂和不规则的图形。Path有一个静态的内部类Op定义了五种运算规则。
Path.Op.DIFFERENCE
差集 图形A减去图形B重叠的区域后A剩下的区域
Path.Op.INTERSECT
交集 图形A和图形B的重叠区域
Path.Op.REVERSE_DIFFERENCE
反差集 图形B减去图形A重叠的区域后B剩下的区域
Path.Op.UNION
并集 图形A和图形B的所有区域
Path.Op.XOR
补集 图形A减去图形B重叠的区域后余下的区域