3

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

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

4

1 回答 1

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;
    }
于 2013-04-16T03:35:57.437 回答