美文网首页
Android Path总结

Android Path总结

作者: 刘小厨 | 来源:发表于2020-04-01 20:14 被阅读0次

    概述
    路径,可用于绘制直线,曲线构成几何路径,还可用于根据路径绘制文字

    • Path的常用Api有移动,连线,闭合,添加图形等
      如:
     mPath.moveTo(100, 70); //移动
    mPath.lineTo(140, 800);//连线
    mPath.rLineTo(40, 730);//相对于当前path的位置连线,和上一行代码效果相同
    mPath.close();//设置曲线闭合
    

    注: mPath.lineTo()方法便是的就是绘制一条一阶贝塞尔曲线

    • Path还有很多addXxx()方法,表示添加子图形,比如:
    //添加弧形,前面四个参数表示弧形所在的矩形范围,倒数第二个参数表示开始绘制的角度,最后一个参数表示弧形扫过得角度
    mPath.addArc(200, 200, 400, 400, -225, 225);
    //Path.Direction.CW表示顺时针方向绘制,CCW表示逆时针方向
    mPath.addRect(500, 500, 900, 900, Path.Direction.CW);
    //添加一个圆
    mPath.addCircle(700,700, 200, Path.Direction.CW);
    //添加一个椭圆
    mPath.addOval(0,0,500,300, Path.Direction.CCW);
    
    //添加圆角矩形, CW顺时针,CCW逆时针
    RectF rectF = new RectF(200, 800, 700, 1200);
    //第二和第三个参数分别表示x,y方向的圆角半径
    mPath.addRoundRect(rectF, 20, 20, Path.Direction.CCW);
    
    • Path有很多xxxTo()方法可以追加子图形,比如:
     //追加弧形,最后一个参数 forceMoveTo,true,绘制时移动起点,false,绘制时连接最后一个点与圆弧起点
    mPath.arcTo(400, 200, 600, 400, -180, 225, false);
    

    对于最后一个参数我们看下代码和对比图:

    mPath.moveTo(0, 0);
    mPath.lineTo(100, 100);
    mPath.arcTo(400, 200, 600, 400, 0, 270, false/true);
    
    forceMoveTo效果
    • Path还可以通过addPath()方法添加路径
    mPath.lineTo(100, 830);
    //创建新的Path对象
    Path newPath = new Path();
    newPath.moveTo(100, 1000);
    newPath.lineTo(600, 1300);
    newPath.lineTo(400, 1700);
    //将新创建的Path添加到原来的Path对象中
    mPath.addPath(newPath);
    
    • Path可以绘制多阶贝塞尔曲线
      例如画二阶贝塞尔曲线,效果如下:
    mPath.moveTo(300, 500);
    mPath.quadTo(500, 100, 800, 500);
    
    二阶贝塞尔曲线

    画二阶贝塞尔曲线还有一个方法

     mPath.moveTo(300, 500);
    //参数表示相对位置,效果同上
    mPath.rQuadTo(200, -400, 500, 0);
    

    画三阶贝塞尔曲线

     //画三阶贝塞尔曲线
    mPath.moveTo(300, 500);
    //mPath.cubicTo(500, 100, 600, 1200, 800, 500);
     //参数表示相对位置,等同于上面一行代码
    mPath.rCubicTo(200, -400, 300, 700, 500, 0);
    
    三阶贝塞尔曲线

    很多自定义View中会使用到贝塞尔曲线的绘制,比如QQ消息的拖拽效果等...
    代码见: Android Path案例-仿QQ气泡的拖拽效果

    相关文章

      网友评论

          本文标题:Android Path总结

          本文链接:https://www.haomeiwen.com/subject/ktzauhtx.html