在安卓上有一种迭代Path对象的方法吗?

4

给定一个android.graphics.Path,我想要能够检索特定的路径命令:quadTo(..)、curveTo(...)、lineTo(...)等,这些命令是组成Path的。

Java提供了PathIterator来实现GeneralPath对象的此操作,但我没有找到Android的等效方法。我是否遗漏了什么?

3个回答

7

现在有三种不同的方式:

抱歉让您久等了!


6
我检查了实际实现,看起来你无法获取信息。每个调用都只会转到本地代码,并且实际路径存储在本地端。
我也尝试查看Canvas的drawPath方法,但它也只是转到本地代码。
我不确定在你的代码中是否可能,但你最好的选择似乎是子类化Path并覆盖所有adXXX方法以将值存储在列表中。

9年后有任何跟进吗?似乎编程的基本规则是“你所设定的一切都必须得到”,即使只是像从路径中提取点以将它们放入SVG <polyline>这样的平凡任务,但仍然... - Phlip

1

虽然这是一个老问题,但我还是想提供答案。你无法检索到命令,但可以获得积分回报。请查看 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方法,可以用来提取路径的一部分,但我从未尝试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接