2012-05-02 1 views
1

Скажем, я нарисовал два круга с радиусом 30 пикселей и 20 пикселей друг от друга. Вы получите перекресток линий. Как я могу предотвратить этот кроссовер?Java: Создание контура нескольких фигур

Я пробовал смотреть на различные графические фильтры, но я не нашел ничего подходящего.

(Этот вопрос не ограничивается 2 круга)

ответ

3

Вы можете использовать java.awt.geom.Area класс делать операции. Он имеет методы add(), intersect(), subtract().

Создайте одну область (сумму обоих овалов) и вычтите другую область (пересечение обоих овалов).


Рабочий код:

int x = 200; int y = 200; 
Ellipse2D.Double first = new Ellipse2D.Double(x,y,75,75); 
Ellipse2D.Double second = new Ellipse2D.Double(x+25,y,75,75); 
Area circles = new Area(first); 
circles.add(new Area(second)); 

graphics2D.draw(circles); 

Two Circles

+0

и как бы я тогда сделать эту новую область? –

+1

Это Shape, поэтому используйте метод public void draw (Shape s) Graphics2D, передающий область результатов. – StanislavL

+0

Ahh да, конечно, рисунок рисунка - Graphics2D. Хм, похоже, он не работает. Он по-прежнему рисует оба круга, поскольку они будут рисоваться отдельно. Позвольте мне проверить это в вопросе. –