2015-07-03 3 views

ответ

3

Я не уверен, что это стоит преобразовать, потому что Polygon - это старый класс Java 1.0, который может хранить только целые координаты, поэтому вы можете потерять некоторую точность. Во всяком случае, вы можете получить PathIterator от формы, и, как вы итерацию его, добавлять новые точки в многоугольнике:

public static void main(String[] args) { 
    Area a = new Area(new Rectangle(1, 1, 5, 5)); 
    PathIterator iterator = a.getPathIterator(null); 
    float[] floats = new float[6]; 
    Polygon polygon = new Polygon(); 
    while (!iterator.isDone()) { 
     int type = iterator.currentSegment(floats); 
     int x = (int) floats[0]; 
     int y = (int) floats[1]; 
     if(type != PathIterator.SEG_CLOSE) { 
      polygon.addPoint(x, y); 
      System.out.println("adding x = " + x + ", y = " + y); 
     } 
     iterator.next(); 
    } 
} 
+0

Ну иногда у вас нет выбора, даже если это не стоит;). Но спасибо, похоже, работает даже для isSingular = false, если вы перебираете путь. Несколько раз, хотя «дыры» внутри круга выходят как полигон, тогда тоже было бы неплохо узнать, какие полигоны являются отверстиями, а какие нет ... –

+0

Если вы поместите итератор пути в FlatteningPathIterator, то он работает, даже если область не является многоугольным. Если вы предлагаете задать другой вопрос о дырах. – lbalazscs

Смежные вопросы