AWTの高度な機能:Graphics2D
public void paint(Graphics g){
Graphics2D g2 = (Graphics2D)g;
if(mode==Stroke) drawStroke(g2);
if(mode==Paint) drawPaint(g2);
if(mode==AreaMd) drawArea(g2);
}

Area area1=new Area(new Ellipse2D.Double(50,100,150,100));
Area area2=new Area(new Ellipse2D.Double(150,50,150,100));
Area area3=new Area(new Ellipse2D.Double(200,100,150,100));
Area areaA=new Area();
areaA.add(area1);
areaA.intersect(area2);
g2.draw(areaA);

Area areaB=new Area();
areaB.add(area2);
areaB.add(area3);
g2.setColor(Color.green);
g2.draw(areaB);
上の緑の線が、二つの楕円領域の和集合のアウトラインになります。他に。subtract(引き算)、exclusiveor の演算が利用できます。

