Java 教程是为 JDK 8 编写的。本页描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java 语言更改以了解 Java SE 9 及后续版本中更新的语言特性的摘要。
请参阅JDK 发行说明以获取有关所有 JDK 发布的新功能、增强功能以及已删除或弃用选项的信息。
构造区域几何(CAG)是通过在现有几何形状上执行布尔运算来创建新的几何形状的过程。在Java 2D API中,Area
类实现了Shape
接口,并支持以下布尔运算。
并集 | 减法 | ||
交集 | 异或(XOR ) |
在这个示例中,Area
对象通过多个椭圆构造了一个梨形。
包含了该applet的完整代码。Pear.java
每片叶子都是通过在两个重叠的圆上执行交集操作来创建的。
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);