public class Area extends Object implements Shape, Cloneable
Area
对象存储和操纵二维空间的封闭区域的与分辨率无关的描述。
Area
对象可以被转换,并且可以与其他Area
对象组合时执行各种建构区域几何(CAG)操作。
该CAG操作包括区域addition
, subtraction
, intersection
和exclusive or
。
有关各种操作的示例,请参阅链接方法文档。
Area
类实现了Shape
接口,并提供了对所有命中测试和路径迭代功能的全面支持,但Area
比通用路径更具体,有以下几种:
Area
从未封闭路径Area
对象在构造过程中隐式关闭,就好像这些路径已被Graphics2D.fill
方法填充。 Area
构造它的路径,只是它描述了相同的封闭的二维区域,但是可能使用完全不同的类型和路径段的排序来实现。 Area
包括:
Area
关闭(打开) Shape
创建Shape
导致Area
对象中的封闭轮廓。 Shape
创建一个Area
,它不包含任何区域(即使“关闭”)也会产生一个空的Area
。 这个问题的一个常见的例子是,从行生成一个Area
将是空的,因为该行不包含任何区域。 空的Area
将在其PathIterator
对象中不迭代几何。 Shape
可以被分成两个(或更多个)子路径,每个子路径包围原始路径的不相交部分之一。 Area
可以采用更多的路径段来描述相同的几何,即使原始轮廓是简单明了的。 Area
课程必须在道路上进行的分析可能不会反映出人类感觉到的“简单明了”的概念。 Constructor and Description |
---|
Area()
创建空区域的默认构造函数。
|
Area(Shape s)
Area 类从指定的Shape 对象创建一个区域几何。
|
Modifier and Type | Method and Description |
---|---|
void |
add(Area rhs)
添加指定的形状
Area 这个形状
Area 。
|
Object |
clone()
返回此
Area 对象的精确副本。
|
boolean |
contains(double x, double y)
测试指定坐标的对象的边界内
Shape ,如所描述的
definition of insideness 。
|
boolean |
contains(double x, double y, double w, double h)
测试
Shape 的内部是否包含指定的矩形区域。
|
boolean |
contains(Point2D p)
测试指定 Point2D 是的边界内Shape ,如所描述的definition of insideness 。
|
boolean |
contains(Rectangle2D r)
测试
Shape 的内部
Shape 全部包含指定的
Rectangle2D 。
|
Area |
createTransformedArea(AffineTransform t)
创建一个新的
Area 对象,其中包含相同的几何形状,因为这
Area 由指定转化
AffineTransform 。
|
boolean |
equals(Area other)
测试两个
Area 对象的
Area 是否相等。
|
void |
exclusiveOr(Area rhs)
设置此的形状
Area 是其当前形状的组合区域和指定的形状
Area ,减去其交集。
|
Rectangle |
getBounds()
返回边界 Rectangle 完全包围此Area 。
|
Rectangle2D |
getBounds2D()
返回一个高精度的边界 Rectangle2D 完全包围此Area 。
|
PathIterator |
getPathIterator(AffineTransform at)
为此 Area 对象的轮廓创建一个PathIterator 。
|
PathIterator |
getPathIterator(AffineTransform at, double flatness)
为此
Area 对象的扁平轮廓创建一个
PathIterator 。
|
void |
intersect(Area rhs)
将此
Area 的形状设置为当前形状和指定的形状Area的
Area 。
|
boolean |
intersects(double x, double y, double w, double h)
测试,如果内部
Shape 相交的指定矩形区域的内部。
|
boolean |
intersects(Rectangle2D r)
如果测试的内部
Shape 相交指定的内部
Rectangle2D 。
|
boolean |
isEmpty()
测试此
Area 对象是否包围任何区域。
|
boolean |
isPolygonal()
测试这个
Area 是否完全由直边多边形几何组成。
|
boolean |
isRectangular()
测试这个
Area 是否是矩形的。
|
boolean |
isSingular()
测试这个
Area 是否由一个封闭的子路径组成。
|
void |
reset()
从这个
Area 中删除所有几何图形并将其还原到空白区域。
|
void |
subtract(Area rhs)
减去指定的形状
Area 从这个形状
Area 。
|
void |
transform(AffineTransform t)
这个转换的几何形状 Area 使用指定的AffineTransform 。
|
public Area()
public Area(Shape s)
s
-
Shape
该地区的Shape
NullPointerException
- 如果
s
为空
public void add(Area rhs)
Area
这个形状Area
。
所得到的这个形状Area
将包括两个形状的结合,或载于非此即彼的规定,所有地区Area
。
// Example:
Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
a1.add(a2);
a1(before) + a2 = a1(after)
################ ################ ################
############## ############## ################
############ ############ ################
########## ########## ################
######## ######## ################
###### ###### ###### ######
#### #### #### ####
## ## ## ##
rhs
- 要添加到当前形状的
Area
NullPointerException
- 如果
rhs
为空
public void subtract(Area rhs)
Area
从这个形状Area
。
由此形成的Area
将包括仅在此Area
而不是在指定的Area中Area
。
// Example:
Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
a1.subtract(a2);
a1(before) - a2 = a1(after)
################ ################
############## ############## ##
############ ############ ####
########## ########## ######
######## ######## ########
###### ###### ######
#### #### ####
## ## ##
rhs
-所述
Area
从当前形状中减去
NullPointerException
- 如果
rhs
为空
public void intersect(Area rhs)
Area
的形状设置为其当前形状和指定的形状Area的Area
。
所得到的这个形状Area
将只包括被包含在这两个领域Area
,并在指定的Area
。
// Example:
Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
a1.intersect(a2);
a1(before) intersect a2 = a1(after)
################ ################ ################
############## ############## ############
############ ############ ########
########## ########## ####
######## ########
###### ######
#### ####
## ##
rhs
-在
Area
与此相交
Area
NullPointerException
- 如果
rhs
为空
public void exclusiveOr(Area rhs)
Area
是其当前形状的组合区域和指定的形状Area
,减去其交集。
由此形成的Area
将仅包括本Area
或指定的Area中Area
,但不包括两者。
// Example:
Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
a1.exclusiveOr(a2);
a1(before) xor a2 = a1(after)
################ ################
############## ############## ## ##
############ ############ #### ####
########## ########## ###### ######
######## ######## ################
###### ###### ###### ######
#### #### #### ####
## ## ## ##
rhs
-
Area
要与此
Area
进行异或。
NullPointerException
- 如果
rhs
为空
public void reset()
Area
删除所有几何,并将其还原到一个空白区域。
public boolean isEmpty()
Area
对象是否包围任何区域。
true
如果此Area
对象表示空白区域;
false
否则。
public boolean isPolygonal()
Area
是否完全由直边多边形几何组成。
true
如果这个Area
的几何完全由线段组成;
false
否则。
public boolean isRectangular()
Area
是否是矩形的。
true
如果这个Area
的几何形状是矩形的;
false
否则。
public boolean isSingular()
Area
是否由一个封闭的子路径组成。
如果路径包含0或1 false
路径,则该方法返回true
,如果路径包含多于1 false
路径,则返回true
。
子路径按路径中显示的SEG_MOVETO
段的数量进行计数。
true
如果Area
由单个基本几何构成;
false
否则。
public Rectangle2D getBounds2D()
Rectangle2D
完全包围此Area
。
Area类将尝试返回Shape的最紧密的边界框。 边框不会被填充以包括Shape的轮廓中的曲线的控制点,但应紧密地适合轮廓本身的实际几何。
getBounds2D
在接口
Shape
Rectangle2D
为
Area
。
Shape.getBounds()
public Rectangle getBounds()
Rectangle
完全包围此Area
。
Area类将尝试返回Shape的最紧密的边界框。 边框不会被填充以包括Shape的轮廓中的曲线的控制点,但应紧密地适合轮廓本身的实际几何。 由于返回的对象表示具有整数的边界框,边界框只能与包含Shape几何的最接近的整数坐标一样紧。
getBounds
在界面
Shape
Rectangle
为
Area
。
Shape.getBounds2D()
public Object clone()
Area
对象的精确副本。
public boolean equals(Area other)
Area
对象的Area
是否相等。
如果参数为null,此方法将返回false。
other
-在
Area
被比作此
Area
true
如果两个几何相等;
false
否则。
public void transform(AffineTransform t)
Area
使用指定的AffineTransform
。
几何被转换到位,永久地改变由该对象定义的封闭区域。
t
- 用于转换区域的转换
NullPointerException
- 如果
t
为空
public Area createTransformedArea(AffineTransform t)
Area
对象,其中包含相同的几何形状,因为这Area
由指定转化AffineTransform
。
这个Area
对象没有变化。
t
- 指定的
AffineTransform
用于转换新的
Area
Area
对象。
NullPointerException
- 如果
t
为空
public boolean contains(double x, double y)
Shape
,如所描述的
definition of insideness 。
public boolean contains(Point2D p)
Point2D
是的边界内Shape
,如所描述的definition of insideness 。
public boolean contains(double x, double y, double w, double h)
Shape
的内部是否包含指定的矩形区域。
位于矩形区域内的所有坐标都必须在Shape
内,以便将整个矩形区域视为包含在Shape
。
Shape.contains()
方法允许一个Shape
保守地返回false
当:
intersect
方法返回true
和 Shape
完全包含矩形区域的代价太高。 Shapes
即使Shape
包含矩形区域,此方法也可能返回false
。
所述Area
类比大多数执行更精确的几何计算Shape
对象,因此可以在需要更精确的答案一起使用。
contains
在界面
Shape
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
true
如果内部Shape
完全包含指定矩形区域;
false
否则或如果Shape
包含矩形区域,并且intersects
方法返回true
并且包含计算将太昂贵执行。
Area
, Shape.intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Shape
的内部Shape
全部包含指定的Rectangle2D
。
Shape.contains()
方法允许一个Shape
保守地返回false
当:
intersect
方法返回true
和 Shape
完全包含Rectangle2D
的代价太高。 Shapes
这种方法也可能返回false
即使Shape
包含Rectangle2D
。
所述Area
类比大多数执行更精确的几何计算Shape
对象,因此可以在需要更精确的答案一起使用。
contains
在接口
Shape
r
- 指定的
Rectangle2D
true
如果内部Shape
完全包含Rectangle2D
;
false
否则或如果Shape
包含Rectangle2D
和intersects
方法返回true
并且包含计算将太昂贵执行。
Shape.contains(double, double, double, double)
public boolean intersects(double x, double y, double w, double h)
Shape
相交的指定矩形区域的内部。
矩形区域被认为是交叉的Shape
如果任何点被包含在双方的内部Shape
和指定的矩形区域。
Shape.intersects()
方法允许一个Shape
保守地返回true
当:
Shape
相交的Shape
很高,但是 Shapes
这个方法可能会返回true
即使矩形区域不相交Shape
。
所述Area
类执行几何相交的更精确的计算比大多数Shape
可以,如果需要更精确的答案被使用的对象,因此。
intersects
在界面
Shape
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
true
如果Shape
的内部和矩形区域的内部相交,或者很可能相交,并且交叉点计算将太昂贵,不能执行;
false
否则。
Area
public boolean intersects(Rectangle2D r)
Shape
相交指定的内部Rectangle2D
。
该Shape.intersects()
方法允许Shape
实现谨慎地返回true
时:
Rectangle2D
和Shape
相交的Shape
很高,但是 Shapes
这个方法可能会返回true
即使Rectangle2D
不相交Shape
。
所述Area
类执行几何相交的更精确的计算比大多数Shape
可以,如果需要更精确的答案被使用的对象,因此。
intersects
中的
Shape
r
- 指定的
Rectangle2D
true
如果内部Shape
和指定的内部Rectangle2D
相交,或两者均是高度可能相交及交叉点计算。将执行太贵;
false
否则。
Shape.intersects(double, double, double, double)
public PathIterator getPathIterator(AffineTransform at)
Area
对象的轮廓创建一个PathIterator
。
此Area
对象未更改。
getPathIterator
在界面
Shape
at
- 要在迭代中返回的应用于
at
的可选
AffineTransform
,如果需要未转换的
null
,则为null
PathIterator
对象返回这个
Area
的轮廓的几何,一次一个段。
public PathIterator getPathIterator(AffineTransform at, double flatness)
Area
对象的扁平轮廓创建一个PathIterator
。
由SEG_MOVETO,SEG_LINETO和SEG_CLOSE点类型表示的未曲线的路径段仅由迭代器返回。
此Area
对象未更改。
getPathIterator
中的
Shape
at
- 要在迭代中返回时应用于
at
的可选
AffineTransform
,如果需要未转换的
null
,则为null
flatness
- 给定曲线的控制点的最大量可以在共线之前变化,而细分曲线由连接终点的直线代替
PathIterator
对象返回这个
Area
的轮廓的几何,一次一个段。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.