文档

Java™ 教程
隐藏目录
从几何图元构建复杂形状
路径: 2D 图形
课程: Java2D 高级主题

从几何基元构造复杂形状

构造区域几何(CAG)是通过在现有几何形状上执行布尔运算来创建新的几何形状的过程。在Java 2D API中,Area类实现了Shape接口,并支持以下布尔运算。

显示并集的维恩图 并集 显示减法的维恩图 减法
显示交集的维恩图 交集 显示异或操作的维恩图 异或(XOR

示例:区域

在这个示例中,Area对象通过多个椭圆构造了一个梨形。


注意:  如果你看不到applet在运行,请先安装至少Java SE Development Kit (JDK) 7版本。

Pear.java包含了该applet的完整代码。

每片叶子都是通过在两个重叠的圆上执行交集操作来创建的。

leaf = new Ellipse2D.Double();
...
leaf1 = new Area(leaf);
leaf2 = new Area(leaf);
...
leaf.setFrame(ew-16, eh-29, 15.0, 15.0);
leaf1 = new Area(leaf);
leaf.setFrame(ew-14, eh-47, 30.0, 30.0);
leaf2 = new Area(leaf);
leaf1.intersect(leaf2);
g2.fill(leaf1);
...
leaf.setFrame(ew+1, eh-29, 15.0, 15.0);
leaf1 = new Area(leaf);
leaf2.intersect(leaf1);
g2.fill(leaf2);

stem = new Ellipse2D.Double();
...
stem.setFrame(ew, eh-42, 40.0, 40.0);
st1 = new Area(stem);
stem.setFrame(ew+3, eh-47, 50.0, 50.0);
st2 = new Area(stem);
st1.subtract(st2);
g2.fill(st1);

梨子的主体是通过在一个圆和一个椭圆上执行并集操作来构造的。

circle = new Ellipse2D.Double();
oval = new Ellipse2D.Double();
circ = new Area(circle);
ov = new Area(oval);
...
circle.setFrame(ew-25, eh, 50.0, 50.0);
oval.setFrame(ew-19, eh-20, 40.0, 70.0);
circ = new Area(circle);
ov = new Area(oval);
circ.add(ov);
g2.fill(circ);

上一页: 控制渲染质量
下一页: 支持用户交互