我正在尝试在 java 程序中读取 Path2D.Double 的段,而 Eclips 不断告诉我:
PathIterator 类型中的方法 currentSegment(float[]) 不适用于参数 (Double[])
但是在接口 PathIterator 中,有 2 种方法似乎让 Eclipse(或我)感到困惑
/**
* Returns the coordinates and type of the current path segment in
* the iteration.
* The return value is the path-segment type:
* SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, or SEG_CLOSE.
* A float array of length 6 must be passed in and can be used to
* store the coordinates of the point(s).
* Each point is stored as a pair of float x,y coordinates.
* SEG_MOVETO and SEG_LINETO types returns one point,
* SEG_QUADTO returns two points,
* SEG_CUBICTO returns 3 points
* and SEG_CLOSE does not return any points.
* @param coords an array that holds the data returned from
* this method
* @return the path-segment type of the current path segment.
* @see #SEG_MOVETO
* @see #SEG_LINETO
* @see #SEG_QUADTO
* @see #SEG_CUBICTO
* @see #SEG_CLOSE
*/
public int currentSegment(float[] coords);
/**
* Returns the coordinates and type of the current path segment in
* the iteration.
* The return value is the path-segment type:
* SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, or SEG_CLOSE.
* A double array of length 6 must be passed in and can be used to
* store the coordinates of the point(s).
* Each point is stored as a pair of double x,y coordinates.
* SEG_MOVETO and SEG_LINETO types returns one point,
* SEG_QUADTO returns two points,
* SEG_CUBICTO returns 3 points
* and SEG_CLOSE does not return any points.
* @param coords an array that holds the data returned from
* this method
* @return the path-segment type of the current path segment.
* @see #SEG_MOVETO
* @see #SEG_LINETO
* @see #SEG_QUADTO
* @see #SEG_CUBICTO
* @see #SEG_CLOSE
*/
public int currentSegment(double[] coords);
我自己的代码如下:
PathIterator it= ((Path2D.Double) p3d).getPathIterator(null, 2d);
Double x, y;
while (!it.isDone()) {
Double coords[]= new Double[6];
System.out.println("1");
int art= it.currentSegment(coords);
System.out.println("2");
switch (art) {
case PathIterator.SEG_MOVETO:
movetoXY(coords[0], coords[1]);
x= coords[0];
y= coords[1];
break;
case PathIterator.SEG_LINETO:
linetoXY(coords[0], coords[1]);
break;
case PathIterator.SEG_CLOSE:
linetoXY(x, y);
break;
default:
System.out.println("unbekanntes Segment " + art);
break;
}
it.next();
}
线与
int art= it.currentSegment(coords);
标记为红色,工具提示显示:
PathIterator 类型中的方法 currentSegment(float[]) 不适用于参数 (Double[])
有一个带有 float[] 的方法和另一个带有 double[] 但名称相同的方法我在这里想念什么?