自定义View初探-Path

自定义View 初探-Path

Path 就是个画路径的

源码注释:

The Path class encapsulates compound (multiple contour) geometric paths
consisting of straight line segments, quadratic curves, and cubic curves.
It can be drawn with canvas.drawPath(path, paint), either filled or stroked
(based on the paint's Style), or it can be used for clipping or to draw
 text on a path

硬式翻译(硬着脸皮翻):Path这个类封装了一些画几何图形的方法,都是有啥呢?直线,二次曲线,三次曲线,通过canvars,drawPath()把你画的集合图形绘制出来

  • (1)至于是填充的几何图形还是只有边组成的几何图形,取决于画笔的Style,如果paint style 是STROKE,那么画的集合图形只有边,如果不设置默认画的是个填充的集合图形
  • (2)or it can be used for clipping or to draw text on a path,说的关于裁剪的这个我没有用过,用过再补充。

moveTo(float x, float y)

两个点可以画出个直线或者面,那么这个moveTo(),就是把线的起始位置设置成(x,y)

lineTo(float x, float y)

这个就是画两点之间线的末端坐标啦,如果不手动设置moveTo(),你再调用 lineTo(),那么起始端就是你上个末端的坐标啦!

close()

这个就是把你最初的起点和最后的起点连线,如果你已经有两个边了,就可能组成封闭图形

示例:

        mPath.reset();
        mPath.moveTo(100, 100);
        // 连接路径到点
        mPath.lineTo(300, 100);
        mPath.lineTo(400, 200);
        mPath.lineTo(200, 200); 
        mPath.close();//这样是会连起来的,帮你把口封住
        canvas.drawPath(mPath, mPaint);

这就成了梯形了

自定义View初探-Path_第1张图片
这是Path style = Paint.Style.STROKE
自定义View初探-Path_第2张图片
这是Path style = Paint.Style.FILL

quadTo(float x1, float y1, float x2, float y2)

画个曲线,二阶贝塞尔曲线

自定义View初探-Path_第3张图片
二阶贝塞尔曲线

那么 P0点就是起始点(moveTo()设置的,或者是lineTo()设置的,或者是默认的(0.0)),P1就是参数(x1,y1)了,p2(x2,y2)啦

  @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        mPath.reset();
        mPath.moveTo(100, 100);
        mPath.quadTo(200, 200, 300, 100);
        mPath.quadTo(400, 200, 500, 100);

        canvas.drawPath(mPath, mPaint);
    }

如图:

自定义View初探-Path_第4张图片
是不是很曲折啊

cubicTo(float x1, float y1, float x2, float y2, float x3, float y3)

三阶贝塞尔曲线

自定义View初探-Path_第5张图片
三阶贝塞尔曲线

与quadTo类似,前四个参数表示两个控制点,最后两个参数表示终点。其实,(x1,y1)就是P1,(x2,y2)是P2,(x3,y3)是P3

最后

参考

  • Android自定义View系列之正弦曲线
  • 用Path来绘制一些图形

PS: 欢迎敲打( ̄▽ ̄)"

你可能感兴趣的:(自定义View初探-Path)