对于给定的字符,字体和大小,我想找到构成字形的段。
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。我似乎无法找到一种可以实现这一目标的方法,所以我相信我可能采取了错误的方法。我能在这做什么?
答案 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())