转自:http://www.cnblogs.com/xqxacm/p/6656554.html

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. linux 进程间通信 dbus-glib【实例】详解二(上) 消息和消息总线(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  2. PackageManagerService启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理?

    PKMS启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理? Android PackageManagerService系列博客目录: PKMS启动详解系列博客概要 PKM ...

  3. Java 枚举(1): 详解7种常见的用法

    目录 用法一:常量 用法二:switch 用法三:向枚举中添加新方法 用法四:覆盖枚举的方法 用法五:实现接口 用法六:使用接口组织枚举 用法七:关于枚举集合的使用 JDK1.5引入了新的类型--枚举 ...

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

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

  5. linux 进程间通信 dbus-glib【实例】详解三 数据类型和dteeth(类型签名type域)(层级结构:服务Service --> Node(对象、object) 等 )(附代码)

    linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...

  6. OS--进程间通信详解(二)

    OS–进程间通信详解(二) 文章目录 OS--进程间通信详解(二) 一.进程间通信 1.互斥量 Futexes Pthreads中的互斥量 2.管程 3.消息传递 消息传递系统的设计要点 用消息传递解 ...

  7. 数据结构--图(Graph)详解(二)

    数据结构–图(Graph)详解(二) 文章目录 数据结构--图(Graph)详解(二) 一.图的存储结构 1.图的顺序存储法 2.图的邻接表存储法 3.图的十字链表存储法 4.图的邻接多重表存储法 二 ...

  8. pytorch教程之nn.Module类详解——使用Module类来自定义网络层

    前言:前面介绍了如何自定义一个模型--通过继承nn.Module类来实现,在__init__构造函数中申明各个层的定义,在forward中实现层之间的连接关系,实际上就是前向传播的过程. 事实上,在p ...

  9. Pytorch|YOWO原理及代码详解(二)

    Pytorch|YOWO原理及代码详解(二) 本博客上接,Pytorch|YOWO原理及代码详解(一),阅前可看. 1.正式训练 if opt.evaluate:logging('evaluating ...

最新文章

  1. 建立Lotus Domino CA验证字权威
  2. java中的抛出异常throws与throw
  3. java方便适配器,JAXB简单自定义适配器以及简单使用
  4. python中multiindex如何索引_python – MultiIndex DataFrames的Pandas HDFStore:如何有效地获取所有索引...
  5. 训练集山准确率高测试集上准确率很低_推荐算法改版前的AB测试
  6. php和python的多线程,Python多线程以及线程锁简单理解(代码)
  7. 外国wince学习论坛收集
  8. 2017.10.1 蚯蚓 思考记录
  9. mysql 5.7 升级 8.0_MySQL5.7升级到8.0过程详解
  10. 概率论第六章数理统计思维导图_【思维导图】第六章:气体灭火系统
  11. 数学建模:评价模型——聚类分析 K-Means python实现
  12. linux软件安装和卸载
  13. Mac终端使用rzsz
  14. Vue创建项目的详细步骤
  15. 案例1-合并2个不同文件夹中的csv文件到另外一个目录,相同的文件名进行数据合并,不同的文件名直接移到新文件夹...
  16. word流程图怎么做虚线框_word虚线框怎么打 word中目录虚线怎么打?
  17. 广义相对论 的 一个问题
  18. 单链表的逆置算法解析
  19. Windows 批量打印
  20. 异常:egret获取引擎列表失败

热门文章

  1. [USACO10OCT]汽水机Soda Machine
  2. python好学吗 老程序员-学习python,难道是为了当一名苦逼的程序员吗?
  3. java 好学_java是什么?对于新手好学吗?
  4. 数据分析----jupyter工具使用指导
  5. postgis——几何图形创建使用
  6. Python学习(中一)
  7. 公众号h5获取手机号权限_微信公众号h5获取用户openId的方法和步骤
  8. r语言中which的使用_R语言绘图 | 使用pheatmap快速绘制热图
  9. QT:为图片加当前系统时间水印
  10. web端与移动端高德地图接入及实例化