美文网首页
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