Path:路径

绘制路径:void drawPath (Path path, Paint paint)

Path 可以绘制的路径

一、直线路径

  1、基本方法      

      void moveTo (float startX, float startY)
        直线的开始点;即将直线路径的绘制点定在(startX,startY)的位置;
      void lineTo (float endX, float endY)
        直线的结束点,又是下一次绘制直线路径的开始点;
      void close ()
        如果连续画了几条直线,但没有形成闭环,调用Close()会将路径首尾点连接起来,形成闭环;

   ①、不形成闭环

       ------------>             

   ②、形成闭环 ,可以看到首尾两个坐标之间闭合了一条直线

    ------------>  

 二、矩形路径

1、基本方法 

    void addRect (float left, float top, float right, float bottom, Path.Direction dir)
    void addRect (RectF rect, Path.Direction dir)     RectF rect = new RectF(float left, float top, float right, float bottom);

   可见两个方法类似。  

    这里有一个 Path.Direction dir 参数, 翻译一下就是:路径绘制的方向

   有两个系统值:

          (1)、Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的矩形路径;
          (2)、Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的矩形路径;

  

  注意点:RectF 和 Rect 类 的区别

      1、都表示矩形

      2、精度不一样,Rect是int ,RectF是float

      3、矩形路径用到的是RectF类,注意不要使用Rect类

        

                   ------------>       

三、圆形路径

1、基本方法   

    void addCircle (float x, float y, float radius, Path.Direction dir)

   就一个方法,参数很显然: x 圆心X轴坐标 ,y 圆心Y轴坐标 ,radius 圆的半径 ,dir 绘制圆形路径的方向

 

            ------------>       

四、椭圆路径

1、基本方法

void addOval (RectF oval, Path.Direction dir)
RectF rect = new RectF(float left, float top, float right, float bottom);

  可以发现和绘制矩形路径类似 用到了RectF类

  注意四个参数的意义

  

                      ------------>      

五、弧形路径

1、基本方法

void addArc (RectF oval, float startAngle, float sweepAngle)

  两个参数的意义:

          ①、float startAngle:开始的角度,X轴正方向为0度
          ②、float sweepAngel:持续的度数;

    画一个X轴正方形开始的(0°),持续270°的 弧形

  

                          ------------>       

六、圆角矩形路径

1、基本方法 

    void addRoundRect (RectF rect, float[] radii, Path.Direction dir)
    void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)

  这里有两个方法:

    ①、 void addRoundRect (RectF rect, float[] radii, Path.Direction dir)

       可以看到多了一个float[] radii 参数,这个参数控制的是圆形矩形四个角的圆形程度,每一个角又由一个X轴半径和一个Y轴半径控制

       所以这个数组参数必须要有8个值 ,这个方法能控制生成的圆角矩形各个角的圆形程度都不一样

       从左上角开始 顺时针 每两个值控制一个角

       下面例子看到看到 从左上角瞬时间开始角的程度分别为 5px,10px,15px,20px

                 ------------>   

    ②、void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)

     这个方法更简单,只要控制一次x,y轴半径,让四个角统一的设置一次就行

     如下图,每一个角的程度都一致

                 ------------>   

------------------------------------------------------------------------------------------------------------------------------

以上是路径的各种绘制方法,接下来讲一下 路径绘制基本都要用到的参数  

1、Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的矩形路径;

2、Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的矩形路径;

很简单可以看出这个参数其实就是控制我们绘制一个图形是 顺时针绘制的还是逆时针绘制的

现在我们给绘制的时候加上文本,就可以轻松看出绘制的顺序了

       ----------->        

   参考代码

自定义控件详解(二):Path类 相关用法的更多相关文章

  1. WindowsPhone自定义控件详解(二) - 模板类库分析

    转自:http://blog.csdn.net/mr_raptor/article/details/7251948 WindowsPhone自定义控件详解(一) - 控件类库分析 上一节主要分析了控件 ...

  2. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

  3. Android View 的绘制流程之 Layout 和 Draw 过程详解 (二)

    View 的绘制系列文章: Android View 的绘制流程之 Measure 过程详解 (一) Android View 绘制流程之 DecorView 与 ViewRootImpl 在上一篇  ...

  4. PopUpWindow使用详解(二)——进阶及答疑

      相关文章:1.<PopUpWindow使用详解(一)——基本使用>2.<PopUpWindow使用详解(二)——进阶及答疑> 上篇为大家基本讲述了有关PopupWindow ...

  5. Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

    [Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.And ...

  6. 第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法

    第7.18节 案例详解:Python类中装饰器@staticmethod定义的静态方法 上节介绍了Python中类的静态方法,本节将结合案例详细说明相关内容. 一.    案例说明 本节定义了类Sta ...

  7. Shiro 安全框架详解二(概念+权限案例实现)

    Shiro 安全框架详解二 总结内容 一.登录认证 二.Shiro 授权 1. 概念 2. 授权流程图 三.基于 ini 的授权认证案例实现 1. 实现原理图 2. 实现代码 2.1 添加 maven ...

  8. CSS选择器详解(伪类) 转 http://blog.csdn.net/Panda_m/article/details/50084699

    CSS选择器详解 之 伪类 伪类对大小写不敏感 结构伪类选择器 结构伪类是CSS3新增的类型选择器,利用DOM树实现元素过滤,通过文档结构的相互关系来匹配元素,可以减少class和id属性的定义,使文 ...

  9. 《Android群英传》读书笔记 (2) 第三章 控件架构与自定义控件详解 + 第四章 ListView使用技巧 + 第五章 Scroll分析

    第三章 Android控件架构与自定义控件详解 1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的.PhoneWin ...

随机推荐

  1. 机器学习技法笔记:12 Neural Network

    Roadmap Motivation Neural Network Hypothesis Neural Network Learning Optimization and Regularization ...

  2. Python函数学习——作用域与嵌套函数

    全局与局部变量 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数. 当全局变量与局部变量同名时,在定义局部变量的函数内 ...

  3. 2019年19道java经典面试题(附答案)

    1.不可变对象 指对象一旦被创建状态不能再改变.任何修改都会创建一个新的对象,如 String.Integer及其它包装类. 2.能否创建一个包含可变对象的不可变对象? 可以.不要共享可变对象的引用就 ...

  4. Docker hv-sock proxy (vsudd) is not reachable

    Docker hv-sock proxy (vsudd) is not reachable Docker hv-sock proxy (vsudd) is not reachable at Docke ...

  5. mysql 开发进阶篇系列 36 工具篇mysqlshow(数据库对象查看工具)

    一.概述 mysqlshow客户端查找工具,能很快地查找存在哪些数据库,数据库中的表,表中的列或索引,和mysql客户端工具很类似,不过有些特性是mysql客户端工具所不具备的. mysqlshow的 ...

  6. maven snapshot和release版本的区别

    Maven的Snapshot版本与Release版本 1. Snapshot版本代表不稳定.尚处于开发中的版本 2. Release版本则代表稳定的版本 3. 什么情况下该用SNAPSHOT? 协同开 ...

  7. idea 中解决maven 包冲突的问题(maven helper)

    转:链接 一.冲突问题 比如项目中引用了两个 fastjson.jar的版本,分别为 fastjson:1.2.28fastjson:1.2.3 我们用到了1.2.28中的某个类, 比如 A类,在版本 ...

  8. linux 双网卡桥接,实现网卡流量镜像与转发

    确认本地是否存在brctl,如果不存在请先安装: 1.确定你的镜像端口,比如eth1: 2.将实际数据通过的端口,比如eth0和镜像端口绑成一个bridge: brctl addbr br0 brct ...

  9. Django 学习笔记(五) --- Ajax 传输数据

    人生苦短 ~ Tips:仅适用于 Python 3+(反正差别不大,py2 改改也能用).因为据 Python 之父 Guido van Rossum 说会在 2020 年停止对 Python 2 的 ...

  10. 按值传递 vs. 按指针传递

    按值传递还是指针传递? 变量赋值有两种方式:按值传递.按"指针"传递(指针也常称为"引用").不同的编程语言赋值的方式不一样,例如Python是按"指 ...