打破轮廓的路径

时间:2013-04-03 10:42:44

标签: android path

我正在尝试将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;
}

然而在我看来,轮廓中的最后一点也会开始下一个轮廓。 谁能帮我吗?也许有更简单,更优雅的方式来做到这一点?在过去的两个星期里,我一直在撞墙,我在这里迷失了。

1 个答案:

答案 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;
    }