有没有一种方法可以在Android上迭代Path对象?

k75qkfdt  于 2023-04-28  发布在  Android
关注(0)|答案(3)|浏览(117)

给定一个android.graphics.Path,我希望能够检索特定的路径命令:组成Path的quadTo(..)、curveTo(...)、lineTo(...)等。
Java为GeneralPath对象提供了一个PathIterator来实现这一点,但我还没有找到任何适用于Android的等效方法。

5m1hhzi4

5m1hhzi41#

我检查了实际的实现,它看起来不像你可以得到的信息。每个调用只是向下到本机代码,和实际的路径存储在本机端。
我还试着查看Canvas的drawPath方法,但它也只是下降到本机代码。
我不确定这在您的代码中是否可行,但您的最佳选择看起来像子类化Path并覆盖所有adXXX方法以将值存储在列表中。

2izufjch

2izufjch2#

现在有三种不同的方式:

  • 在Android U上,使用Path.getPathIterator(参见PathIterator
  • 使用pathway,一个开源库,可以追溯到API 21
  • 使用androidx.graphics:graphics-path,pathwayandroidx端口

抱歉让你久等了!

igetnqfo

igetnqfo3#

老问题,但我希望它有答案你不能检索命令,但你可以得到点回来。看看android.graphics.PathMeasure API 1

float[] tmpPos = new float[2];
  float[] tmpTan = new float[2];
  PathMeasure measure = new PathMeasure();
  measure.setPath(path, true);
  do {
   float dist = measure.getLength();
   for (float p = 0; p < dist; p += 1) {
     measure.getPosTan(p, tmpPos, tmpTan);
     float x = tmpPos[0], y = tmpPos[1];
     float nx = tmpTan[0], ny = tmpTan[1];
     // do your own stuff
    }
 } while (measure.nextContour());

PathMeasure也有getSegment,它可以用于提取片段,但我从未尝试过。

相关问题