Android自定义view之 Graphics2D Api(下)

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重叠的区域后余下的区域

这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值