|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.geom.RectangularShape java.awt.geom.Rectangle2D java.awt.Rectangle
public class Rectangle
Rectangle
指定坐标空间中的一个区域,通过坐标空间中 Rectangle
对象左上方的点 (x,y)
、宽度和高度可以定义这个区域。
Rectangle
对象的 width
和 height
是 public
字段。创建 Rectangle
的构造方法,以及可以修改该对象的方法,都允许将 width 和 height 设置为负值。
对于 width 或 height 正好为 0 的 Rectangle
,它在相应轴上存在维数为 0 的位置,但在这种情况下,也可将其视为空的 Rectangle。对于这种 Rectangle
,isEmpty()
方法将返回 ture。 如果两个维数中任一维数为 0,则测试空 Rectangle
是否包含某个点或是否与某个矩形相交的方法将始终返回 false。用点或矩形合并这种 Rectangle
的方法将在结果中包含 Rectangle
在该轴上的位置,正如调用 add(Point)
方法一样。
对于仅影响 Rectangle
位置的方法,无论 Rectangle
是否沿任一轴具有负维数或 0 维数,都将在其位置上进行操作。
注意,用默认不带参数的构造方法构造的 Rectangle
将具有 0x0
维数,因此为空。Rectangle
仍然具有 (0,0)
的位置,且将该位置用于合并和添加操作。因此,尝试累积点集合范围的代码最初应使用具体的负 width 和负 height 来构造 Rectangle
,或者应使用该集合中的第一个点构造 Rectangle
。例如:
Rectangle bounds = new Rectangle(0, 0, -1, -1); for (int i = 0; i < points.length; i++) { bounds.add(points[i]); }如果知道点数组中至少包含了一个点,那么也可以:
Rectangle bounds = new Rectangle(points[0]); for (int i = 1; i < points.length; i++) { bounds.add(points[i]); }
此类用 32 位整数存储其位置和维数。通常情况下,这些操作可能生成超过 32 位整数范围的结果。这些方法将以某种方式计算它们的结果,该方式可以避免任何针对中间结果的 32 位溢出,然后将选择最佳的表示方式,将最终结果存储回保存位置和维数的 32 位字段中。通过将真实结果修改为最接近的 32 位值,将得到的位置存储到 x
和 y
字段中。存储到 width
和 height
维数字段中的值将被作为 32 位值选择,这些值尽可能包含真实结果的最大部分。通常情况下,这意味着维数将被独立地修改为 32 位整数范围内,但以下情况除外:如果必须移动位置才能将其存储到 32 位字段对中,则将相对于位置的“最佳表示形式”对维数进行调整;如果真实结果有一个负维数,并因此沿一个或两个轴不存在,则存储的维数在这些轴中将为负数;如果真实结果有一个位置可以在 32 位整数范围内表示,但沿一个或两个轴维数为 0,则存储的维数在这些轴中将为 0。
嵌套类摘要 |
---|
从类 java.awt.geom.Rectangle2D 继承的嵌套类/接口 |
---|
Rectangle2D.Double, Rectangle2D.Float |
字段摘要 | |
---|---|
int |
height
Rectangle 的高度。 |
int |
width
Rectangle 的宽度。 |
int |
x
Rectangle 左上角的 X 坐标。 |
int |
y
Rectangle 左上角的 Y 坐标。 |
从类 java.awt.geom.Rectangle2D 继承的字段 |
---|
OUT_BOTTOM, OUT_LEFT, OUT_RIGHT, OUT_TOP |
构造方法摘要 | |
---|---|
Rectangle()
构造一个新的 Rectangle ,其左上角的坐标为 (0,0),宽度和高度均为 0。 |
|
Rectangle(Dimension d)
构造一个新的 Rectangle ,其左上角为 (0,0),其宽度和高度由 Dimension 参数指定。 |
|
Rectangle(int width,
int height)
构造一个新的 Rectangle ,其左上角的坐标为 (0,0),其宽度和高度由同名的参数指定。 |
|
Rectangle(int x,
int y,
int width,
int height)
构造一个新的 Rectangle ,其左上角被指定为 (x,y) ,其宽度和高度由同名的参数指定。 |
|
Rectangle(Point p)
构造一个新的 Rectangle ,其左上角是指定的 Point ,其宽度和高度均为 0。 |
|
Rectangle(Point p,
Dimension d)
构造一个新的 Rectangle ,其左上角由 Point 参数指定,其宽度和高度由 Dimension 参数指定。 |
|
Rectangle(Rectangle r)
构造一个新的 Rectangle ,并将其初始化,以与指定 Rectangle 的值匹配。 |
方法摘要 | |
---|---|
void |
add(int newx,
int newy)
将一个由整数参数 newx,newy 指定的点添加到此 Rectangle 的边界。 |
void |
add(Point pt)
将指定的 Point 添加到此 Rectangle 的边界。 |
void |
add(Rectangle r)
将一个 Rectangle 添加到此 Rectangle 中。 |
boolean |
contains(int x,
int y)
检查此 Rectangle 是否包含位于指定位置 (x,y) 的点。 |
boolean |
contains(int X,
int Y,
int W,
int H)
检查此 Rectangle 是否完全包含位于指定位置 (X,Y) 且具有指定维数 (W,H) 的 Rectangle 。 |
boolean |
contains(Point p)
检查此 Rectangle 是否包含指定的 Point 。 |
boolean |
contains(Rectangle r)
检查此 Rectangle 是否完全包含指定的 Rectangle 。 |
Rectangle2D |
createIntersection(Rectangle2D r)
返回一个新的 Rectangle2D 对象,它表示此 Rectangle2D 与指定 Rectangle2D 的交集。 |
Rectangle2D |
createUnion(Rectangle2D r)
返回一个新的 Rectangle2D 对象,它表示此 Rectangle2D 与指定 Rectangle2D 的并集。 |
boolean |
equals(Object obj)
检查两个矩形是否相等。 |
Rectangle |
getBounds()
获取此 Rectangle 的边界 Rectangle 。 |
Rectangle2D |
getBounds2D()
返回一个高精度的、比 getBounds 方法更准确的 Shape 边界框。 |
double |
getHeight()
以 double 精度返回边界 Rectangle 的高度。 |
Point |
getLocation()
返回此 Rectangle 的位置。 |
Dimension |
getSize()
获取此 Rectangle 的大小,用返回的 Dimension 表示。 |
double |
getWidth()
以 double 精度返回边界 Rectangle 的宽度。 |
double |
getX()
以 double 精度返回边界 Rectangle 的 X 坐标。 |
double |
getY()
以 double 精度返回边界 Rectangle 的 Y 坐标。 |
void |
grow(int h,
int v)
在水平方向和垂直方向上同时调整 Rectangle 的大小。 |
boolean |
inside(int X,
int Y)
已过时。 从 JDK version 1.1 开始,由 contains(int, int) 取代。 |
Rectangle |
intersection(Rectangle r)
计算此 Rectangle 与指定 Rectangle 的交集。 |
boolean |
intersects(Rectangle r)
确定此 Rectangle 是否与指定的 Rectangle 相交。 |
boolean |
isEmpty()
确定 RectangularShape 是否为空。 |
void |
move(int x,
int y)
已过时。 从 JDK version 1.1 开始,由 setLocation(int, int) 取代。 |
int |
outcode(double x,
double y)
确定指定坐标相对于此 Rectangle2D 的位置。 |
void |
reshape(int x,
int y,
int width,
int height)
已过时。 从 JDK version 1.1 开始,由 setBounds(int, int, int, int) 取代。 |
void |
resize(int width,
int height)
已过时。 从 JDK version 1.1 开始,由 setSize(int, int) 取代。 |
void |
setBounds(int x,
int y,
int width,
int height)
将此 Rectangle 的边界 Rectangle 设置为指定的 x 、y 、width 和 height 。 |
void |
setBounds(Rectangle r)
设置此 Rectangle 的边界 Rectangle ,以匹配指定的 Rectangle 。 |
void |
setLocation(int x,
int y)
将此 Rectangle 移动到指定位置。 |
void |
setLocation(Point p)
将此 Rectangle 移动到指定位置。 |
void |
setRect(double x,
double y,
double width,
double height)
将此 Rectangle 的边界设置为整数边界,它包含指定的 x 、y 、width 和 height 。 |
void |
setSize(Dimension d)
设置此 Rectangle 的大小,以匹配指定的 Dimension 。 |
void |
setSize(int width,
int height)
将此 Rectangle 的大小设置为指定的宽度和高度。 |
String |
toString()
返回表示此 Rectangle 及其值的 String 。 |
void |
translate(int dx,
int dy)
将此 Rectangle 沿 X 坐标轴向右,沿 Y 坐标轴向下平移指定距离。 |
Rectangle |
union(Rectangle r)
计算此 Rectangle 与指定 Rectangle 的并集。 |
从类 java.awt.geom.Rectangle2D 继承的方法 |
---|
add, add, add, contains, contains, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, setRect, union |
从类 java.awt.geom.RectangularShape 继承的方法 |
---|
clone, contains, contains, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
从接口 java.awt.Shape 继承的方法 |
---|
contains, contains, contains, contains, getPathIterator, getPathIterator, intersects, intersects |
字段详细信息 |
---|
public int x
Rectangle
左上角的 X 坐标。
setLocation(int, int)
,
getLocation()
public int y
Rectangle
左上角的 Y 坐标。
setLocation(int, int)
,
getLocation()
public int width
Rectangle
的宽度。
setSize(int, int)
,
getSize()
public int height
Rectangle
的高度。
setSize(int, int)
,
getSize()
构造方法详细信息 |
---|
public Rectangle()
Rectangle
,其左上角的坐标为 (0,0),宽度和高度均为 0。
public Rectangle(Rectangle r)
Rectangle
,并将其初始化,以与指定 Rectangle
的值匹配。
r
- Rectangle
,要从中将初始值复制到新构造的 Rectangle
public Rectangle(int x, int y, int width, int height)
Rectangle
,其左上角被指定为 (x,y)
,其宽度和高度由同名的参数指定。
x
- 指定的 X 坐标y
- 指定的 Y 坐标width
- Rectangle
的宽度height
- Rectangle
的高度public Rectangle(int width, int height)
Rectangle
,其左上角的坐标为 (0,0),其宽度和高度由同名的参数指定。
width
- Rectangle
的宽度height
- Rectangle
的高度public Rectangle(Point p, Dimension d)
Rectangle
,其左上角由 Point
参数指定,其宽度和高度由 Dimension
参数指定。
p
- 一个 Point
,它是 Rectangle
的左上角d
- 一个 Dimension
,表示 Rectangle
的宽度和高度public Rectangle(Point p)
Rectangle
,其左上角是指定的 Point
,其宽度和高度均为 0。
p
- 一个 Point
,它是 Rectangle
左上角的顶点public Rectangle(Dimension d)
Rectangle
,其左上角为 (0,0),其宽度和高度由 Dimension
参数指定。
d
- 一个 Dimension
,用于指定宽度和高度方法详细信息 |
---|
public double getX()
double
精度返回边界 Rectangle
的 X 坐标。
RectangularShape
中的 getX
Rectangle
的 X 坐标。public double getY()
double
精度返回边界 Rectangle
的 Y 坐标。
RectangularShape
中的 getY
Rectangle
的 Y 坐标。public double getWidth()
double
精度返回边界 Rectangle
的宽度。
RectangularShape
中的 getWidth
Rectangle
的宽度。public double getHeight()
double
精度返回边界 Rectangle
的高度。
RectangularShape
中的 getHeight
Rectangle
的高度。public Rectangle getBounds()
Rectangle
的边界 Rectangle
。
包含此方法是出于完整性考虑,以对应 Component
的 getBounds
方法。
Shape
中的 getBounds
RectangularShape
中的 getBounds
Rectangle
,它等同于此 Rectangle
的边界 Rectangle
。Component.getBounds()
,
setBounds(Rectangle)
,
setBounds(int, int, int, int)
public Rectangle2D getBounds2D()
getBounds
方法更准确的 Shape
边界框。注意,不保证返回的 Rectangle2D
是包围 Shape
的最小边界框,只保证 Shape
完全位于指示的 Rectangle2D
中。此方法返回的边界框通常比 getBounds
方法返回的更紧密,而且永远不会因为溢出问题而出错,因为返回值可以是一个使用双精度值存储尺寸的 Rectangle2D
实例。
Shape
中的 getBounds2D
Rectangle2D
中的 getBounds2D
Rectangle2D
实例,它是 Shape
的高精度边界框。Shape.getBounds()
public void setBounds(Rectangle r)
Rectangle
的边界 Rectangle
,以匹配指定的 Rectangle
。
包含此方法是出于完整性考虑,以对应 Component
的 setBounds
方法。
r
- 指定的 Rectangle
getBounds()
,
Component.setBounds(java.awt.Rectangle)
public void setBounds(int x, int y, int width, int height)
Rectangle
的边界 Rectangle
设置为指定的 x
、y
、width
和 height
。
包含此方法是出于完整性考虑,以对应 Component
的 setBounds
方法。
x
- 此 Rectangle
左上角的新 X 坐标y
- 此 Rectangle
左上角的新 Y 坐标width
- 此 Rectangle
的新宽度height
- 此 Rectangle
的新高度getBounds()
,
Component.setBounds(int, int, int, int)
public void setRect(double x, double y, double width, double height)
Rectangle
的边界设置为整数边界,它包含指定的 x
、y
、width
和 height
。如果这些参数指定的 Rectangle
超出整数的最大范围,则结果将为与最大整数边界相交的指定 Rectangle
的最佳表示形式。
Rectangle2D
中的 setRect
x
- 指定矩形左上角的 X 坐标y
- 指定矩形左上角的 Y 坐标width
- 指定矩形的宽度height
- 指定矩形的新高度@Deprecated public void reshape(int x, int y, int width, int height)
setBounds(int, int, int, int)
取代。
Rectangle
的边界 Rectangle
设置为指定的 x
、y
、width
和 height
。
x
- 此 Rectangle
左上角的新 X 坐标此
- Rectangle
左上角的新 Y 坐标width
- 此 Rectangle
的新宽度height
- 此 Rectangle
的新高度public Point getLocation()
Rectangle
的位置。
包含此方法是出于完整性考虑,以对应 Component
的 getLocation
方法。
Point
,它是此 Rectangle
左上角的顶点。Component.getLocation()
,
setLocation(Point)
,
setLocation(int, int)
public void setLocation(Point p)
Rectangle
移动到指定位置。
包含此方法是出于完整性考虑,以对应 Component
的 setLocation
方法。
p
- 指定此 Rectangle
新位置的 Point
Component.setLocation(java.awt.Point)
,
getLocation()
public void setLocation(int x, int y)
Rectangle
移动到指定位置。
包含此方法是出于完整性考虑,以对应 Component
的 setLocation
方法。
x
- 新位置的 X 坐标y
- 新位置的 Y 坐标getLocation()
,
Component.setLocation(int, int)
@Deprecated public void move(int x, int y)
setLocation(int, int)
取代。
Rectangle
移动到指定位置。
x
- 新位置的 X 坐标新位置的
- Y 坐标public void translate(int dx, int dy)
Rectangle
沿 X 坐标轴向右,沿 Y 坐标轴向下平移指定距离。
dx
- 沿 X 轴移动此 Rectangle
的距离dy
- 沿 Y 轴移动此 Rectangle
的距离setLocation(int, int)
,
setLocation(java.awt.Point)
public Dimension getSize()
Rectangle
的大小,用返回的 Dimension
表示。
包含此方法是出于完整性考虑,以对应 Component
的 getSize
方法。
Dimension
,表示此 Rectangle
的大小。Component.getSize()
,
setSize(Dimension)
,
setSize(int, int)
public void setSize(Dimension d)
Rectangle
的大小,以匹配指定的 Dimension
。
包含此方法是出于完整性考虑,以对应 Component
的 setSize
方法。
d
- Dimension
对象的新大小Component.setSize(java.awt.Dimension)
,
getSize()
public void setSize(int width, int height)
Rectangle
的大小设置为指定的宽度和高度。
包含此方法是出于完整性考虑,以对应 Component
的 setSize
方法。
width
- 此 Rectangle
的新宽度height
- 此 Rectangle
的新高度Component.setSize(int, int)
,
getSize()
@Deprecated public void resize(int width, int height)
setSize(int, int)
取代。
Rectangle
的大小设置为指定的宽度和高度。
width
- 此 Rectangle
的新宽度height
- 此 Rectangle
的新高度public boolean contains(Point p)
Rectangle
是否包含指定的 Point
。
p
- 要测试的 Point
Point
位于此 Rectangle
中,则返回 true
;否则返回 false
。public boolean contains(int x, int y)
Rectangle
是否包含位于指定位置 (x,y)
的点。
x
- 指定的 X 坐标y
- 指定的 Y 坐标
(x,y)
位于此 Rectangle
中,则返回 true
;否则返回 false
。public boolean contains(Rectangle r)
Rectangle
是否完全包含指定的 Rectangle
。
r
- 指定的 Rectangle
Rectangle
完全包含在此 Rectangle
中,则返回 true
;否则返回 false
public boolean contains(int X, int Y, int W, int H)
Rectangle
是否完全包含位于指定位置 (X,Y)
且具有指定维数 (W,H)
的 Rectangle
。
X
- 指定的 X 坐标Y
- 指定的 Y 坐标W
- Rectangle
的宽度H
- Rectangle
的高度
(X, Y, W, H)
指定的 Rectangle
完全包含在此 Rectangle
中,则返回 true
;否则返回 false
。@Deprecated public boolean inside(int X, int Y)
contains(int, int)
取代。
Rectangle
是否包含位于指定位置 (X,Y)
的点。
X
- 指定的 X 坐标Y
- 指定的 Y 坐标
(X,Y)
位于此 Rectangle
中,则返回 true
;否则返回 false
。public boolean intersects(Rectangle r)
Rectangle
是否与指定的 Rectangle
相交。如果两个矩形的交集为非空,则它们是相交的。
r
- 指定的 Rectangle
Rectangle
与此 Rectangle
相交,则返回 true
;否则返回 false
。public Rectangle intersection(Rectangle r)
Rectangle
与指定 Rectangle
的交集。返回一个新的 Rectangle
,它表示两个矩形的交集。如果两个矩形没有相交,则结果将是一个空矩形。
r
- 指定的 Rectangle
Rectangle
和此 Rectangle
中的最大 Rectangle
;如果这些矩形没有相交,则返回一个空矩形。public Rectangle union(Rectangle r)
Rectangle
与指定 Rectangle
的并集。返回一个新的 Rectangle
,它表示两个矩形的并集。
如果两个 Rectangle
的任何维数小于 0,则应用针对不存在矩形的规则。如果只有一个维数小于 0,那么结果将是另一个 Rectangle
的副本。如果两个维数都小于 0,则结果中将至少有一个维数小于 0。
如果得到的 Rectangle
维数太大而无法表示为 int
,则结果中将沿该维数有一个为 Integer.MAX_VALUE
的维数。
r
- 指定的 Rectangle
Rectangle
和此 Rectangle
的最小 Rectangle
。public void add(int newx, int newy)
newx,newy
指定的点添加到此 Rectangle
的边界。
如果此 Rectangle
的任何维数小于 0,则应用针对不存在矩形的规则。在这种情况下,此 Rectangle
的新边界的位置将等于指定的坐标,且宽度和高度等于 0。
在添加一个点后,调用将添加的点作为参数的 contains
方法不一定返回 true
。对于 Rectangl
右边和底部边界线上的点,econtains
方法不返回 true
。所以,如果添加的点落在放大的 Rectangle
右边和底部边界线上,则 contains
将针对该点返回 false
。如果指定的点必须包含在新 Rectangle
中,则应添加 1x1 矩形:
r.add(newx, newy, 1, 1);
newx
- 新点的 X 坐标newy
- 新点的 Y 坐标public void add(Point pt)
Point
添加到此 Rectangle
的边界。
如果此 Rectangle
的任何维数小于 0,则应用针对不存在矩形的规则。在这种情况下,此 Rectangle
新边界的位置将等于指定 Point
的坐标,且宽度和高度等于 0。
在添加一个 Point
后,调用将添加的 Point
作为参数的 contains
方法不一定返回 true
。对于 Rectangl
右边和底部边界线上的点,econtains
方法不返回 true
。所以,如果添加的 Point
落在放大的 Rectangle
右边和底部边界线上,则 contains
将针对该 Point
返回 false
。如果指定的点必须包含在新 Rectangle
中,则应添加 1x1 矩形:
r.add(pt.x, pt.y, 1, 1);
pt
- 添加到此 Rectangle
中的新 Point
public void add(Rectangle r)
Rectangle
添加到此 Rectangle
中。得到的 Rectangle
是两个矩形的并集。
如果任何一个 Rectangle
任何维数小于 0,则结果将是另一个 Rectangle
的维数。如果两个 Rectangle
都至少有一个维数小于 0,则结果中至少有一个维数小于 0。
如果任何一个 Rectangle
中有一个或两个维数等于 0,则沿那些轴具有 0 维数的结果将等同于通过将相应原坐标添加到沿该轴的结果矩形中所获得的结果,这类似于 add(Point)
方法的操作,但没有超过该坐标的维数。
如果得到的 Rectangle
维数太大而无法表示为 int
,则结果中将沿该维数有一个为 Integer.MAX_VALUE
的维数。
r
- 指定的 Rectangle
public void grow(int h, int v)
Rectangle
的大小。
此方法修改 Rectangle
,使它左边和右边都增加 h
个单位,顶部和底部都增加 v
个单位。
新的 Rectangle
的左上角是 (x - h, y - v)
,宽度是 (width + 2h)
,高度是 (height + 2v)
。
如果为 h
和 v
提供的是负值,则 Rectangle
的大小也相应地缩小。grow
方法检查整数溢出或下溢,但不检查得到的 width
和 height
值是否从负值增大到非负值或从非负值减小到负值。
h
- 水平扩展v
- 垂直扩展public boolean isEmpty()
RectangularShape
是否为空。当 RectangularShape
为空时,它不封闭任何区域。
RectangularShape
中的 isEmpty
RectangularShape
为空,则返回 true
;否则返回 false
。public int outcode(double x, double y)
Rectangle2D
的位置。此方法计算适当掩码值的二进制或 (OR),这些掩码值针对此 Rectangle2D
的每个边指示指定坐标是否在此 Rectangle2D
其余边缘的同一侧。
Rectangle2D
中的 outcode
x
- 指定的 X 坐标y
- 指定的 Y 坐标
Rectangle2D.OUT_LEFT
,
Rectangle2D.OUT_TOP
,
Rectangle2D.OUT_RIGHT
,
Rectangle2D.OUT_BOTTOM
public Rectangle2D createIntersection(Rectangle2D r)
Rectangle2D
对象,它表示此 Rectangle2D
与指定 Rectangle2D
的交集。
Rectangle2D
中的 createIntersection
r
- 与此 Rectangle2D
相交的 Rectangle2D
Rectangle2D
和此 Rectangle2D
包含的最大 Rectangle2D
。public Rectangle2D createUnion(Rectangle2D r)
Rectangle2D
对象,它表示此 Rectangle2D
与指定 Rectangle2D
的并集。
Rectangle2D
中的 createUnion
r
- 与此 Rectangle2D
合并的 Rectangle2D
Rectangle2D
和此 Rectangle2D
的最小 Rectangle2D
。public boolean equals(Object obj)
当且仅当参数不是 null
,而是一个与此 Rectangle
具有相同左上角、宽度和高度的 Rectangle
对象时,结果才为 true
。
Rectangle2D
中的 equals
obj
- 要与此 Rectangle
进行比较的 Object
true
;否则返回 false
。Object.hashCode()
,
Hashtable
public String toString()
Rectangle
及其值的 String
。
Object
中的 toString
Rectangle
对象的坐标和大小值的 String
。
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。