美文网首页
自定义View初探-Path

自定义View初探-Path

作者: HuBoZzz | 来源:发表于2017-05-26 15:02 被阅读0次

    自定义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);
    

    这就成了梯形了

    这是Path style = Paint.Style.STROKE 这是Path style = Paint.Style.FILL

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

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

    二阶贝塞尔曲线

    那么 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);
        }
    

    如图:

    是不是很曲折啊

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

    三阶贝塞尔曲线

    三阶贝塞尔曲线

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

    最后

    参考

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

    相关文章

      网友评论

          本文标题:自定义View初探-Path

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