java.lang.Object java.awt.geom.RectangularShape java.awt.geom.Rectangle2D
public abstract class Rectangle2D
Rectangle2D
类描述通过位置 (x,y)
和尺寸 (w x h)
定义的矩形。
此类是所有存储 2D 矩形的对象的惟一抽象超类。坐标的实际存储表示形式由子类决定。
嵌套类摘要 | |
---|---|
static class |
Rectangle2D.Double Double 类定义一个在 double 坐标中指定的矩形。 |
static class |
Rectangle2D.Float Float 类定义一个在 float 坐标中指定的矩形。 |
字段摘要 | |
---|---|
static int |
OUT_BOTTOM 指示点位于此 Rectangle2D 下方的位掩码。 |
static int |
OUT_LEFT 指示点位于此 Rectangle2D 左边的位掩码。 |
static int |
OUT_RIGHT 指示点位于此 Rectangle2D 右边的位掩码。 |
static int |
OUT_TOP 指示点位于此 Rectangle2D 上方的位掩码。 |
构造方法摘要 | |
---|---|
protected |
Rectangle2D() 这是一个不可直接实例化的抽象类。 |
方法摘要 | |
---|---|
void |
add(double newx, double newy) 将由 double 精度参数 newx 和 newy 指定的点添加到此 Rectangle2D 中。 |
void |
add(Point2D pt) 将 Point2D 对象 pt 添加到此 Rectangle2D 中。 |
void |
add(Rectangle2D r) 将 Rectangle2D 对象添加到此 Rectangle2D 中。 |
boolean |
contains(double x, double y) 测试指定坐标是否在 Shape 的边界内。 |
boolean |
contains(double x, double y, double w, double h) 测试 Shape 内部是否完全包含指定矩形区域。 |
abstract Rectangle2D |
createIntersection(Rectangle2D r) 返回一个新的 Rectangle2D 对象,它表示此 Rectangle2D 与指定 Rectangle2D 的交集。 |
abstract Rectangle2D |
createUnion(Rectangle2D r) 返回一个新的 Rectangle2D 对象,它表示此 Rectangle2D 与指定 Rectangle2D 的并集。 |
boolean |
equals(Object obj) 确定指定的 Object 是否与此 Rectangle2D 相等。 |
Rectangle2D |
getBounds2D() 返回一个高精度的、比 getBounds 方法更准确的 Shape 边界框。 |
PathIterator |
getPathIterator(AffineTransform at) 返回定义此 Rectangle2D 边界的迭代对象。 |
PathIterator |
getPathIterator(AffineTransform at, double flatness) 返回定义变平的 Rectangle2D 边界的迭代对象。 |
int |
hashCode() 返回此 Rectangle2D 的哈希码。 |
static void |
intersect(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest) 将指定的一对源 Rectangle2D 对象相交,并将结果置于指定的目标 Rectangle2D 对象中。 |
boolean |
intersects(double x, double y, double w, double h) 测试 Shape 内部是否与指定矩形区域的内部相交。 |
boolean |
intersectsLine(double x1, double y1, double x2, double y2) 测试指定线段是否与此 Rectangle2D 的内部相交。 |
boolean |
intersectsLine(Line2D l) 测试指定的线段是否与此 Rectangle2D 的内部相交。 |
abstract int |
outcode(double x, double y) 确定指定坐标相对于此 Rectangle2D 的位置。 |
int |
outcode(Point2D p) 确定指定 Point2D 相对于此 Rectangle2D 的位置。 |
void |
setFrame(double x, double y, double w, double h) 将此 Rectangle2D 外部边界的位置和大小设置为指定矩形值。 |
abstract void |
setRect(double x, double y, double w, double h) 将此 Rectangle2D 的位置和大小设置为指定的 double 值。 |
void |
setRect(Rectangle2D r) 将此 Rectangle2D 设置为与指定的 Rectangle2D 相同。 |
static void |
union(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest) 将一对源 Rectangle2D 对象合并,并将结果置于指定的目标 Rectangle2D 对象中。 |
从类 java.awt.geom.RectangularShape 继承的方法 |
---|
clone, contains, contains, getBounds, getCenterX, getCenterY, getFrame, getHeight, getMaxX, getMaxY, getMinX, getMinY, getWidth, getX, getY, intersects, isEmpty, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final int OUT_LEFT
Rectangle2D
左边的位掩码。
public static final int OUT_TOP
Rectangle2D
上方的位掩码。
public static final int OUT_RIGHT
Rectangle2D
右边的位掩码。
public static final int OUT_BOTTOM
Rectangle2D
下方的位掩码。
构造方法详细信息 |
---|
protected Rectangle2D()
Rectangle2D.Float
,
Rectangle2D.Double
,
Rectangle
方法详细信息 |
---|
public abstract void setRect(double x, double y, double w, double h)
Rectangle2D
的位置和大小设置为指定的
double
值。
x
- 此
Rectangle2D
左上角的 X 坐标
y
- 此
Rectangle2D
左上角的 Y 坐标
w
- 此
Rectangle2D
的宽度
h
- 此
Rectangle2D
的高度
public void setRect(Rectangle2D r)
Rectangle2D
设置为与指定的
Rectangle2D
相同。
r
- 指定的
Rectangle2D
public boolean intersectsLine(double x1, double y1, double x2, double y2)
Rectangle2D
的内部相交。
x1
- 指定线段起始点的 X 坐标
y1
- 指定线段起始点的 Y 坐标
x2
- 指定线段结束点的 X 坐标
y2
- 指定线段结束点的 Y 坐标
Rectangle2D
的内部相交,则返回
true
;否则返回
false
。
public boolean intersectsLine(Line2D l)
Rectangle2D
的内部相交。
l
- 要测试是否与此
Rectangle2D
内部相交的指定
Line2D
Line2D
与此
Rectangle2D
的内部相交,则返回
true
;否则返回
false
。
public abstract int outcode(double x, double y)
Rectangle2D
的位置。此方法计算适当掩码值的二进制或 (OR),这些掩码值针对此
Rectangle2D
的每个边指示指定坐标是否在此
Rectangle2D
其余边缘的同一侧。
x
- 指定的 X 坐标
y
- 指定的 Y 坐标
OUT_LEFT
,
OUT_TOP
,
OUT_RIGHT
,
OUT_BOTTOM
public int outcode(Point2D p)
Point2D
相对于此
Rectangle2D
的位置。此方法计算适当掩码值的二进制或,这些值针对此
Rectangle2D
的每个边指示指定
Point2D
是否在此
Rectangle2D
其余边缘的同一侧。
p
- 指定的
Point2D
OUT_LEFT
,
OUT_TOP
,
OUT_RIGHT
,
OUT_BOTTOM
public void setFrame(double x, double y, double w, double h)
Rectangle2D
外部边界的位置和大小设置为指定矩形值。
RectangularShape
中的
setFrame
x
- 此
Rectangle2D
左上角的 X 坐标
y
- 此
Rectangle2D
左上角的 Y 坐标
w
- 此
Rectangle2D
的宽度
h
- 此
Rectangle2D
的高度
RectangularShape.getFrame()
public Rectangle2D getBounds2D()
getBounds
方法更准确的
Shape
边界框。注意,不保证返回的
Rectangle2D
是包围
Shape
的最小边界框,只保证
Shape
完全位于指示的
Rectangle2D
中。此方法返回的边界框通常比
getBounds
方法返回的更紧密,而且永远不会因为溢出问题而出错,因为返回值可以是一个使用双精度值存储尺寸的
Rectangle2D
实例。
Rectangle2D
实例,它是
Shape
的高精度边界框。
Shape.getBounds()
public boolean contains(double x, double y)
Shape
的边界内。
x
- 要测试的指定的 X 坐标
y
- 要测试的指定的 Y 坐标
Shape
边界内,则返回
true
;否则返回
false
。
public boolean intersects(double x, double y, double w, double h)
Shape
内部是否与指定矩形区域的内部相交。如果任何一个点既包含在
Shape
内,又包含在指定矩形区域内,则认为矩形区域与
Shape
相交。
在下列情况下,Shape.intersects()
方法允许 Shape
实现谨慎地返回 true
:
Shape
相交的可能性很大,但是 Shape
,即使矩形区域没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
Shape
的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
Area
public boolean contains(double x, double y, double w, double h)
Shape
内部是否完全包含指定矩形区域。矩形区域内的所有坐标都必须位于
Shape
中,才可以认为整个矩形区域包含在
Shape
中。
在下列情况下,Shape.contains()
方法允许 Shape
实现谨慎地返回 false
:
intersect
方法返回 true
并且 Shape
是否完全包含矩形区域的代价太高。 Shape
,即使
Shape
包含矩形区域,此方法也可能返回
false
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地执行几何计算,因此可以使用该类。
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
Shape
内部完全包含指定矩形区域,则返回
true
;否则,如果
Shape
包含矩形区域、
intersects
方法返回
true
且执行包含计算代价太高,则返回
false
。
Area
,
Shape.intersects(double, double, double, double)
public abstract Rectangle2D createIntersection(Rectangle2D r)
Rectangle2D
对象,它表示此
Rectangle2D
与指定
Rectangle2D
的交集。
r
- 与此
Rectangle2D
相交的
Rectangle2D
Rectangle2D
和此
Rectangle2D
包含的最大
Rectangle2D
。
public static void intersect(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest)
Rectangle2D
对象相交,并将结果置于指定的目标
Rectangle2D
对象中。为了避免创建第三个 Rectangle2D 对象,将其中一个源矩形作为目标矩形也是可以的,但这样此方法将改写源矩形的初始点。
src1
- 要彼此相交的一对
Rectangle2D
对象中的第一个对象
src2
- 要彼此相交的一对
Rectangle2D
对象中的第二个对象
dest
- 保存
src1
与
src2
相交结果的
Rectangle2D
public abstract Rectangle2D createUnion(Rectangle2D r)
Rectangle2D
对象,它表示此
Rectangle2D
与指定
Rectangle2D
的并集。
r
- 与此
Rectangle2D
合并的
Rectangle2D
Rectangle2D
和此
Rectangle2D
的最小
Rectangle2D
。
public static void union(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest)
Rectangle2D
对象合并,并将结果置于指定的目标
Rectangle2D
对象中。为了避免创建第三个 Rectangle2D 对象,将其中一个源矩形作为目标矩形也是可以的,但这样此方法将改写源矩形的初始点。
src1
- 要彼此合并的一对
Rectangle2D
对象中的第一个对象
src2
- 要彼此合并的
Rectangle2D
对象中的第二个对象
dest
- 保存
src1
与
src2
合并结果的
Rectangle2D
public void add(double newx, double newy)
newx
和
newy
指定的点添加到此
Rectangle2D
中。所得到的
Rectangle2D
是同时包含原始
Rectangle2D
和指定点的最小
Rectangle2D
。
在添加一个点后,以添加的点作为参数调用 contains
方法不一定返回 true
。对于矩形的右边和底边上的点,contains
方法不返回 true
。所以,如果添加的点落在放大的矩形的左边和底边上,则 contains
将对该点返回 false
。
newx
- 新点的 X 坐标
newy
- 新点的 Y 坐标
public void add(Point2D pt)
Point2D
对象
pt
添加到此
Rectangle2D
中。所得到的
Rectangle2D
是同时包含原始
Rectangle2D
和指定的
Point2D
的最小的
Rectangle2D
。
在添加一个点后,以添加的点为参数调用 contains
方法不一定返回 true
。对于矩形的右边和底部边界线上的点,contains
方法不返回 true
。所以,如果添加的点落在放大的矩形的左边和底部边界线上,则 contains
将针对该点返回 false
。
pt
- 添加到此
Rectangle2D
中的新
Point2D
public void add(Rectangle2D r)
Rectangle2D
对象添加到此
Rectangle2D
中。得到的
Rectangle2D
是两个
Rectangle2D
对象的并集。
r
- 要添加到此
Rectangle2D
中的
Rectangle2D
。
public PathIterator getPathIterator(AffineTransform at)
Rectangle2D
边界的迭代对象。此类的迭代器是多线程安全的,这意味着此
Rectangle2D
类保证对此
Rectangle2D
对象几何形状所作的修改不会影响该几何形状中正在进行的迭代。
at
- 一个可选的
AffineTransform
,用于在迭代中返回的坐标;如果需要未转换的坐标,则为
null
Rectangle2D
轮廓几何形状的
PathIterator
对象,一次一段。
public PathIterator getPathIterator(AffineTransform at, double flatness)
Rectangle2D
边界的迭代对象。因为矩形已经是平的,所以
flatness
参数将被忽略。此类的迭代器是多线程安全的,这意味着此
Rectangle2D
类保证对此
Rectangle2D
对象几何形状所作的修改不会影响该几何形状中正在进行的迭代。
Shape
中的
getPathIterator
RectangularShape
中的
getPathIterator
at
- 一个可选
AffineTransform
,用于在迭代中返回的坐标;如果需要未转换的坐标,则为
null
flatness
- 用来近似曲线段的直线段偏离原始曲线上任一点的最大距离。因为矩形已经是平的,所以
flatness
参数将被忽略。
PathIterator
对象,该对象返回此
Rectangle2D
的轮廓的几何形状,一次一段。
public int hashCode()
Rectangle2D
的哈希码。
Rectangle2D
对象的哈希码。
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
Object
是否与此
Rectangle2D
相等。如果指定的
Object
是
Rectangle2D
的实例并且位置和大小与此
Rectangle2D
相同,则其与此
Rectangle2D
相等。
obj
- 要与此
Rectangle2D
进行比较的
Object
。
obj
是
Rectangle2D
的实例并且与
Rectangle2D
具有相同值,则返回
true
;否则返回
false
。
Object.hashCode()
,
Hashtable