自定义控件详解(二):Path类 相关用法

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类

  注意四个参数的意义 

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

五、弧形路径

       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的缩写,指创建顺时针方向的矩形路径;

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

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

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

参考代码

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和PYTHON有个约会

ionic中的$inoicModal

在ionic中,除了常规的弹窗【$ionicPopup】还提供了浮动窗口【$ionicPopover】

692
来自专栏PPV课数据科学社区

[V课堂]R语言十八讲(七)

? R的画图功能是非常强大的,这非常有利于数据可视化,对于R画图,我们一 般使用三个画图系统,分别是R自带的画图系统,另外还有两个包,他们的画图功能也很强...

2766
来自专栏腾讯IVWEB团队的专栏

SVG 动画精髓(下)

线条动画 SVG 中的线条动画常常用作过渡屏(splash screen)中。例如:一些比较炫酷的 LOGO 和 炫酷的效果,大家有没有动心想学一学,看看自己到...

3930
来自专栏用户2442861的专栏

关于CSS中background样式的repeat和no-repeat的坐标问题

http://blog.sina.com.cn/s/blog_98eef7830101cv8t.html

551
来自专栏xingoo, 一个梦想做发明家的程序员

BootStrap网格布局

  如何使用BootStrap样式   BootStrap与其他的开源库类似,直接引用它的css样式文件就可以使用了。 <link rel="styleshee...

18010
来自专栏大数据挖掘DT机器学习

信息图制作教程案例

当大家看到很多好看的信息图的时候最喜欢问的两个问题是:用什么软件做的?怎么做的? 在工具选择上,使用Adobe Illustrator,制作过程大家...

3557
来自专栏WindCoder

20种常用的 Ps技术

一种简单的数码照片后期润饰 1 打开图片,执行色像/饱和度(-40)降低饱和度。 2 新建一图层,将图层模式改为柔光,用画笔工具将需要润饰的部分画几下,这里...

981
来自专栏小白客

用Python画一只丑丑的猪头

前两天在知乎上看到有人用Python的turtle库画了一只小猪佩奇,接着就有网友用turtle画了一只哆啦A梦,不得不说他们都是人才,画得有模有样的。知乎地址...

1542
来自专栏一“技”之长

Java开发GUI之Label标签 原

    Label控件是awt包中最简单的几个视图控件之一,其用来显示固定的文本,示例如下:

642
来自专栏jojo的技术小屋

原 荐 CSS3 transform 引起z

1784

扫码关注云+社区