如何获得构成一般路径的段?

时间:2015-04-17 19:47:07

标签: java vector

对于给定的字符,字体和大小,我想找到构成字形的段。

    String text = "C";
    Font f = new Font("Serif", Font.PLAIN, 12);
    FontRenderContext frc = new FontRenderContext(null, true, true);
    GlyphVector gv = f.createGlyphVector(frc, 
    GeneralPath gp = (GeneralPath) gv.getOutline();

所以现在我有了一条通用路径,但是我想要制作这条路径的linetos和curvetos。我似乎无法找到一种可以实现这一目标的方法,所以我相信我可能采取了错误的方法。我能在这做什么?

2 个答案:

答案 0 :(得分:2)

getPathIterator() GeneralPath方法将为您提供这些细分。

答案 1 :(得分:1)

请参阅PathIterator您可以从任何Shape对象获取的内容。您的gv.getOutline()会返回Shape

这是一个迭代形状线段并打印出结果的简单示例。

public void printShapeSegments(Shape shape) {
    PathIterator it = shape.getPathIterator(new AffineTransform());

    double [] coords = new double[6];
    int currSegment = -1;
    while(!it.isDone()) {
        currSegment = it.currentSegment(coords);
        if(currSegment == PathIterator.SEG_CLOSE) {
            System.out.println("Close");
        } else if(currSegment == PathIterator.SEG_CUBICTO) {
            System.out.println("Cubic");
        } else if(currSegment == PathIterator.SEG_LINETO) {
            System.out.println("Line");
        } else if(currSegment == PathIterator.SEG_MOVETO) {
            System.out.println("Move");
        } else if(currSegment == PathIterator.SEG_QUADTO) {
            System.out.println("Quad");
        }
        System.out.println(Arrays.toString(coords));
        it.next();
    }
}

在您的代码中,您可以使用printShapeSegments(gv.getOutline())