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

简介: Path:路径绘制路径:void drawPath (Path path, Paint paint)Path 可以绘制的路径一、直线路径  1、基本方法            void moveTo (float startX, float startY)        直线的开始点...

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

 

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

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

 

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

 

 

   参考代码

相关文章
|
8月前
|
安全 Java API
ServletRequest类及其使用方法介绍
ServletRequest类及其使用方法介绍
241 6
|
3月前
|
开发者
ArkTS组件继承的高级用法
本文详细介绍了ArkTS中组件继承的高级用法,涵盖继承的概念、基本用法、多态、接口继承和抽象类的使用。通过具体示例,展示了如何在HarmonyOS应用开发中利用继承实现代码复用、功能扩展和模块化设计,提升开发效率和应用质量。
206 3
|
存储 安全 Java
【C++】模板进阶|继承
模板的特化和分离编译、继承的全方面剖析。
|
开发者
继承的基本使用 | 学习笔记
快速学习继承的基本使用,介绍了继承的基本使用系统机制, 以及在实际应用过程中如何使用。
继承的基本使用 | 学习笔记
|
数据可视化 计算机视觉
qml开发笔记(二):可视化元素基类Item详解(上半场anchors等等)
qml开发笔记(二):可视化元素基类Item详解(上半场anchors等等)
qml开发笔记(二):可视化元素基类Item详解(上半场anchors等等)
|
Windows
UWP 扩展/自定义标题栏的方法,一些概念和一些注意事项
原文 UWP 扩展/自定义标题栏的方法,一些概念和一些注意事项 在 Windows 10 的前几个版本中将页面内容扩展到标题栏上还算简单,主要是没什么坑。直到一些新控件的引入和一些外观设计趋势变化之后,扩展标题栏开始出现一些坑了。
1321 0
|
C#
WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式
原文:WPF中实现PropertyGrid(用于展示对象的详细信息)的三种方式 由于WPF中没有提供PropertyGrid控件,有些业务需要此类的控件。
2058 0
|
C#
【WPF】wpf用MultiBinding解决Converter需要动态传参的问题,以Button为例
原文:【WPF】wpf用MultiBinding解决Converter需要动态传参的问题,以Button为例       用Binding并通过Converter转换的时候,可能偶尔会遇到传参的问题,一般通过设置xaml中的BindingParameter属性来给Converter传递参数。
1994 0
|
图形学
Unity 项目中委托Delegate用法案例
Unity中Delegate的用法场景 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) China...
1542 0