美文网首页
Android笔记之PathMeasure

Android笔记之PathMeasure

作者: 卖梦想的男孩 | 来源:发表于2017-03-09 18:53 被阅读36次

    Android中简单的绘图canvas都已经提供了基本的api,而复杂的几何图形一般是借助Path来实现的,因为Path可以将多个步骤拼凑成一个连贯的图形。
    如果想对Path做动画之类或获取某位置上的信息时,当然可以自己计算,而PathMeasure已经做了,相当于是Path的一个工具类。

    PathMeasure 使用:

    • 关联Path
      要想获取Path的信息,首先要关联上对应的Path。

    • PathMeasure(Path path, boolean forceClosed)

    • setPath(Path path, boolean forceClosed)
      这两种方式均可
      forceClosed是指计算Path信息的时候,是否按照一个封闭的Path来计算,这里只是计算会考虑,不会对原有的Path进行修改。
      比如正常未封闭的Path长度为800,强制封闭后,获取Path的长度可能是1000

    • 获取Path的长度
      getLength()

    • 获取下一段Path
      boolean nextContour()
      由于Path中可能是有多段Path组合而成的,如果大圆里面有一个小圆。nextContour会按照添加到Path的顺序来获取下一段Path。
      可通过返回值判断是否是最后一段

    • 截取Path中的某一段
      boolean getSegment(float startD, float stopD, Path dst, boolean startWithMoveTo)
      startD 开始的距离
      stopD 结束的距离
      dst 返回到Path片段
      startWithMoveTo 是否片段的第一个点事MoveTo操作
      注意:

    1. 0<=startD<stopD<getLength()
    2. dst中如果已经有其他路径,不会被覆盖,而是继续今天到后面的
    3. startWithMoveTo则是对path添加的时候是否做移动处理,还是接着直接原有的Path直接画
    • 以数值的形式获取Path中某距离上的位置和正切信息
      boolean getPosTan(float distance, float[] pos, float[] tan)
      distance 距离
      pos 位置的x,y
      tan 正切的对边与邻边

    • 以矩阵的的形式获取Path的某距离上的位置和正切信息
      boolean getMatrix(float distance, Matrix matrix, int flags)
      distance 距离
      matrix存放否Matrix
      flags 获取哪一类信息,可以用|组合来获取两者的信息
      PathMeasure.TANGENT_MATRIX_FLAG
      PathMeasure.POSITION_MATRIX_FLAG

    相关文章

      网友评论

          本文标题:Android笔记之PathMeasure

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