我正在尝试将Android中的复杂路径分解为其子轮廓。 目前我想出了这段代码:
public static ArrayList<Path> splitToContours(Path path) {
ArrayList<Path> list = new ArrayList<Path>();
PathMeasure pm = new PathMeasure(path, true);
float segment = 0;
Path tempPath;
do {
tempPath = new Path();
tempPath.rewind();
pm.getSegment(segment, segment + pm.getLength(), tempPath, true);
segment += pm.getLength();
tempPath.close();
list.add(tempPath);
} while (pm.nextContour());
return list;
}
然而在我看来,轮廓中的最后一点也会开始下一个轮廓。 谁能帮我吗?也许有更简单,更优雅的方式来做到这一点?在过去的两个星期里,我一直在撞墙,我在这里迷失了。
答案 0 :(得分:2)
不确定您的确切问题是什么,但我使用类似的东西来创建绘图样式动画。你似乎走在正确的轨道上,也许不关闭路径?
List<Path> segmentPath(Path path, float segmentLength, float scale,
float dx, float dy) {
PathMeasure pm = new PathMeasure(path, false);
float length = pm.getLength();
float start = 0;
float delta = segmentLength;
List<Path> segments = new ArrayList<Path>();
while (start <= length) {
float end = start + delta;
if (end > length) {
end = length;
}
Path segment = new Path();
pm.getSegment(start, end, segment, true);
segments.add(segment);
start += delta;
}
return segments;
}