public abstract class Rectangle2D extends RectangularShape
Rectangle2D
类描述了由位置(x,y)
和维度(w x h)
定义的(w x h)
。
该类只是存储2D矩形的所有对象的抽象超类。 坐标的实际存储表示留给子类。
Modifier and Type | Class and Description |
---|---|
static class |
Rectangle2D.Double
Double 类定义了一个以双坐标指定的矩形。
|
static class |
Rectangle2D.Float
Float 类定义了一个以浮点坐标指定的矩形。
|
Modifier and Type | Field and Description |
---|---|
static int |
OUT_BOTTOM
该位掩码表示一个点位于此
Rectangle2D 。
|
static int |
OUT_LEFT
该位掩码表示一个点位于此
Rectangle2D 的左侧。
|
static int |
OUT_RIGHT
该位掩码表示一个点位于此
Rectangle2D 的右侧。
|
static int |
OUT_TOP
该位掩码表示一个点位于此
Rectangle2D 。
|
Modifier | Constructor and Description |
---|---|
protected |
Rectangle2D()
这是一个无法直接实例化的抽象类。
|
Modifier and Type | Method and Description |
---|---|
void |
add(double newx, double newy)
将由双精度参数
newx 和
newy 的点添加到此
Rectangle2D 。
|
void |
add(Point2D pt)
将
Point2D 对象
pt 添加到此
Rectangle2D 。
|
void |
add(Rectangle2D r)
在此
Rectangle2D 中添加一个
Rectangle2D 对象。
|
boolean |
contains(double x, double y)
测试指定坐标的对象的边界内
Shape ,如所描述的
definition of insideness 。
|
boolean |
contains(double x, double y, double w, double h)
测试
Shape 的内部是否包含指定的矩形区域。
|
abstract Rectangle2D |
createIntersection(Rectangle2D r)
返回一个新的
Rectangle2D 对象,表示此
Rectangle2D 与指定的Rectangle2D的
Rectangle2D 。
|
abstract Rectangle2D |
createUnion(Rectangle2D r)
返回一个新的
Rectangle2D 对象,表示该
Rectangle2D 与指定的Rectangle2D的并
Rectangle2D 。
|
boolean |
equals(Object obj)
确定指定的
Object 是否等于此
Rectangle2D 。
|
Rectangle2D |
getBounds2D()
Shape 比
getBounds 方法返回一个高精度和更准确的边界框。
|
PathIterator |
getPathIterator(AffineTransform at)
返回定义此
Rectangle2D 边界的迭代对象。
|
PathIterator |
getPathIterator(AffineTransform at, double flatness)
返回一个定义折叠
Rectangle2D 的边界的迭代
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 的内部
Rectangle2D 。
|
boolean |
intersectsLine(Line2D l)
测试指定的线段是否与此
Rectangle2D 的内部
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 对象。
|
clone, contains, contains, getBounds, getCenterX, getCenterY, getFrame, getHeight, getMaxX, getMaxY, getMinX, getMinY, getWidth, getX, getY, intersects, isEmpty, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
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
Rectangle2D
y
- 这个
Rectangle2D
左上角的Y
Rectangle2D
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
的内部
Rectangle2D
。
x1
- 指定
x1
的X坐标
y1
- 指定
y1
的Y坐标
x2
- 指定线段终点的X坐标
y2
- 指定线段终点的Y坐标
true
如果指定的线段与此Rectangle2D
的内部Rectangle2D
;
false
否则。
public boolean intersectsLine(Line2D l)
Rectangle2D
的内部
Rectangle2D
。
l
- 指定的Line2D
测试与这个Rectangle2D
的内部Rectangle2D
true
如果指定Line2D
相交这个内部Rectangle2D
;
false
否则。
public abstract int outcode(double x, double y)
Rectangle2D
。
该方法计算适当的掩码值的二进制OR,该值适用于该Rectangle2D
的每一侧, Rectangle2D
是否与该Rectangle2D
的其余部分位于边的同一侧。
x
- 指定的X坐标
y
- 指定的Y坐标
OUT_LEFT
,
OUT_TOP
,
OUT_RIGHT
,
OUT_BOTTOM
public int outcode(Point2D p)
Point2D
在于相对于这个Rectangle2D
。
此方法计算的二进制OR指示适当的掩码值的,对于此的每一侧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
的外部边界的位置和大小设置为指定的矩形值。
setFrame
在类别
RectangularShape
x
- 这个
Rectangle2D
左上角的X
Rectangle2D
y
- 这个
Rectangle2D
左上角的Y
Rectangle2D
w
- 这个宽度
Rectangle2D
h
- 这个
Rectangle2D
的高度
RectangularShape.getFrame()
public Rectangle2D getBounds2D()
Shape
比getBounds
方法返回一个高精度和更精确的边界框。
需要注意的是没有保证返回Rectangle2D
是最小的边框包围Shape
,只表示Shape
完全在指定的范围内Rectangle2D
。
通过此方法返回的边界框通常比通过返回的更紧密getBounds
方法,而且永远不会因为溢出问题,因为返回值可以是实例Rectangle2D
一个使用双精度值存储尺寸。
需要注意的是definition of insideness可能会导致出现对的定义轮廓点的情况下shape
可能不被认为包含在返回bounds
对象,但只有在这些点也未审议了原有的情况下shape
。
如果一个point
是在shape
内,根据contains(point)
方法,那么它必须在返回的Rectangle2D
边界对象中,根据contains(point)
方法的bounds
。 特别:
shape.contains(p)
需要bounds.contains(p)
如果一个point
不在shape
,那么它可能仍然包含在bounds
对象中:
bounds.contains(p)
并不表示shape.contains(p)
Rectangle2D
那是一个高精度边界框
Shape
。
Shape.getBounds()
public boolean contains(double x, double y)
Shape
,如所描述的
definition of insideness 。
x
- 要测试的指定X坐标
y
- 要测试的指定Y坐标
true
如果指定的坐标在Shape
边界内;
false
否则。
public boolean intersects(double x, double y, double w, double h)
Shape
相交的指定矩形区域的内部。
矩形区域被认为是交叉的Shape
如果任何点被包含在双方的内部Shape
和指定的矩形区域。
该Shape.intersects()
方法允许Shape
实现谨慎地返回true
时:
Shape
相交,但是 Shapes
这种方法也可能返回true
即使矩形区域没有相交Shape
。
所述Area
类执行几何相交的更精确的计算比大多数Shape
可以,如果需要更精确的答案被使用的对象,因此。
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
true
如果Shape
的内部和矩形区域的内部相交,或者两者都很可能相交,并且交叉点计算将太昂贵执行;
false
否则。
Area
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
对象,因此可以在需要更精确的答案一起使用。
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
true
如果内部的Shape
完全包含指定的矩形区域;
false
否则或如果Shape
包含矩形区域,并且intersects
方法返回true
,并且包含计算将太昂贵执行。
Area
, Shape.intersects(double, double, double, double)
public abstract Rectangle2D createIntersection(Rectangle2D r)
Rectangle2D
对象,表示此
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
-所述
Rectangle2D
保存的交集的结果
src1
和
src2
public abstract Rectangle2D createUnion(Rectangle2D r)
Rectangle2D
对象,表示此
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
-在
Rectangle2D
持有的联合的结果
src1
和
src2
public void add(double newx, double newy)
newx
和newy
的点添加到此Rectangle2D
。
所得到的Rectangle2D
是最小的Rectangle2D
,其中包含原始的Rectangle2D
和指定的点。
添加点后,调用contains
添加点作为参数不一定返回true
。 contains
方法不会返回true
用于true
右侧或底部边缘的点。 因此,如果添加点落在放大矩形的左边缘或下边缘,那么contains contains
返回false
。
newx
- 新点的X坐标
newy
- 新点的Y坐标
public void add(Point2D pt)
Point2D
对象pt
添加到此Rectangle2D
。
所得到的Rectangle2D
是最小的Rectangle2D
,其中包含原始的Rectangle2D
和指定的Point2D
。
添加点后,调用contains
添加点作为参数不一定返回true
。 contains
方法不会返回true
对于true
右边或底边的点。 因此,如果添加点落在放大矩形的左边缘或下边缘,那么contains contains
返回false
。
pt
- 新的
Point2D
添加到此
Rectangle2D
。
public void add(Rectangle2D r)
Rectangle2D
中添加一个Rectangle2D
对象。
所得到的Rectangle2D
是两个Rectangle2D
对象的并集。
r
-
Rectangle2D
添加到此
Rectangle2D
。
public PathIterator getPathIterator(AffineTransform at)
Rectangle2D
边界的迭代对象。
此类的迭代器是多线程安全的,这意味着此Rectangle2D
类保证对此Rectangle2D
对象的几何的Rectangle2D
不会影响已处理的该几何的任何迭代。
at
- 要在迭代中返回时应用于
at
的可选
AffineTransform
,如果需要未转换的
null
,则为null
PathIterator
对象返回这个
Rectangle2D
的轮廓的几何,一次一个段。
public PathIterator getPathIterator(AffineTransform at, double flatness)
Rectangle2D
的边界。
由于矩形已经平坦,因此flatness
参数将被忽略。
这个类的迭代器是多线程安全的,这意味着这个Rectangle2D
类保证对这个Rectangle2D
对象的几何的Rectangle2D
不会影响已经在处理的几何的任何迭代。
getPathIterator
在界面
Shape
getPathIterator
在类别
RectangularShape
at
- 要在迭代中返回时应用于
at
的可选
AffineTransform
,如果需要未转换的
null
,则为null
flatness
- 用于近似曲线段的线段的最大距离允许偏离原始曲线上的任何点。
由于矩形已经平坦,因此flatness
参数将被忽略。
PathIterator
对象返回此
Rectangle2D
的轮廓的几何,一次一个段。
public int hashCode()
Rectangle2D
的哈希码。
hashCode
在
Object
Rectangle2D
的哈希码。
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
Object
是否等于此Rectangle2D
。
指定Object
等于该Rectangle2D
如果是的一个实例Rectangle2D
,如果它的位置和大小是相同的,因为这Rectangle2D
。
equals
在类别
Object
obj
- 一个
Object
要与这个
Rectangle2D
进行比较。
true
如果obj
是的一个实例Rectangle2D
,并具有相同的值;
false
否则。
Object.hashCode()
, HashMap