JavaTM 2 Platform
Standard Ed. 5.0

java.awt.geom
类 Arc2D

java.lang.Object
  继承者 java.awt.geom.RectangularShape
      继承者 java.awt.geom.Arc2D
所有已实现的接口:
Shape, Cloneable
直接已知子类:
Arc2D.Double, Arc2D.Float

public abstract class Arc2D
extends RectangularShape

Arc2D 是存储由边界矩形、起始角度、角跨越(弧的长度)和闭合类型(OPENCHORDPIE)所定义的 2D 弧的所有对象的抽象超类。

边界矩形定义一个完整椭圆(此弧是其一部分)的外部边界。角度是相对于边界矩形的非正方形区域指定的,这样 45 度角总是落在椭圆中心到边界矩形右上角的连线上。因此,如果边界矩形沿一条轴的长度远长于沿另一条轴的长度,则到弧段的起始点和结束点的角度将沿边界长轴会发生较大偏斜。

坐标的实际存储表示形式要靠子类来完成。


嵌套类摘要
static class Arc2D.Double
          此类定义以 double 精度指定的弧。
static class Arc2D.Float
          此类定义以 float 精度指定的弧。
 
字段摘要
static int CHORD
          该闭合类型针对通过从弧段的起始点到弧段的结束点画一条直线来闭合的弧。
static int OPEN
          该闭合类型针对不具有用来连接弧段两个端点的路径段的开弧。
static int PIE
          该闭合类型针对通过从弧段的起始点到完整椭圆的中心、再从圆心到弧段的结束点画直线来闭合的弧。
 
构造方法摘要
protected Arc2D(int type)
          这是一个不能直接实例化的抽象类。
 
方法摘要
 boolean contains(double x, double y)
          确定指定的点是否位于弧的边界内。
 boolean contains(double x, double y, double w, double h)
          确定弧的内部是否完全包含指定的矩形。
 boolean contains(Rectangle2D r)
          确定弧的内部是否完全包含指定的矩形。
 boolean containsAngle(double angle)
          确定指定的角度是否位于弧的角跨越内。
abstract  double getAngleExtent()
          返回弧的角跨越。
abstract  double getAngleStart()
          返回弧的起始角度。
 int getArcType()
          返回弧的弧闭合类型:OPENCHORDPIE
 Rectangle2D getBounds2D()
          返回弧的高精度边界框。
 Point2D getEndPoint()
          返回弧的结束点。
 PathIterator getPathIterator(AffineTransform at)
          返回定义弧边界的迭代对象。
 Point2D getStartPoint()
          返回弧的起始点。
 boolean intersects(double x, double y, double w, double h)
          确定弧的内部与指定矩形的内部是否相交。
protected abstract  Rectangle2D makeBounds(double x, double y, double w, double h)
          构造一个适当精度的 Rectangle2D,以保存为作为此弧的边界框而计算出的参数。
abstract  void setAngleExtent(double angExt)
          将此弧的角跨越设置为指定的 double 值。
 void setAngles(double x1, double y1, double x2, double y2)
          使用两组坐标设置此弧的起始角度和角跨越。
 void setAngles(Point2D p1, Point2D p2)
          使用两个点设置此弧的起始角度和角跨越。
abstract  void setAngleStart(double angSt)
          将此弧的起始角度设置为指定的 double 值。
 void setAngleStart(Point2D p)
          将此弧的起始角度设置为由指定点定义、相对于此弧的中心的角度。
 void setArc(Arc2D a)
          将此弧设置为与指定弧相同。
abstract  void setArc(double x, double y, double w, double h, double angSt, double angExt, int closure)
          将此弧的位置、大小、角跨越和闭合类型设置为指定的 double 值。
 void setArc(Point2D loc, Dimension2D size, double angSt, double angExt, int closure)
          将此弧的位置、大小、角跨越和闭合类型设置为指定值。
 void setArc(Rectangle2D rect, double angSt, double angExt, int closure)
          将此弧的位置、大小、角跨越和闭合类型设置为指定值。
 void setArcByCenter(double x, double y, double radius, double angSt, double angExt, int closure)
          将此弧的位置、边界、角跨越和闭合类型设置为指定值。
 void setArcByTangent(Point2D p1, Point2D p2, Point2D p3, double radius)
          将此弧的位置、边界和角跨越设置为指定值。
 void setArcType(int type)
          将此弧的闭合类型设置为指定值:OPENCHORDPIE
 void setFrame(double x, double y, double w, double h)
          将此弧外部边界的位置和大小设置为指定值。
 
从类 java.awt.geom.RectangularShape 继承的方法
clone, contains, getBounds, getCenterX, getCenterY, getFrame, getHeight, getMaxX, getMaxY, getMinX, getMinY, getPathIterator, getWidth, getX, getY, intersects, isEmpty, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

OPEN

public static final int OPEN
该闭合类型针对不具有用来连接弧段两个端点的路径段的开弧。

另请参见:
常量字段值

CHORD

public static final int CHORD
该闭合类型针对通过从弧段的起始点到弧段的结束点画一条直线来闭合的弧。

另请参见:
常量字段值

PIE

public static final int PIE
该闭合类型针对通过从弧段的起始点到完整椭圆的中心、再从圆心到弧段的结束点画直线来闭合的弧。

另请参见:
常量字段值
构造方法详细信息

Arc2D

protected Arc2D(int type)
这是一个不能直接实例化的抽象类。特定于类型的实现子类可用于实例化,并提供用于存储满足以下各种存取器方法所需信息的许多格式。

参数:
type - 此弧的闭合类型:OPENCHORDPIE
另请参见:
Arc2D.Float, Arc2D.Double
方法详细信息

getAngleStart

public abstract double getAngleStart()
返回弧的起始角度。

返回:
一个 double 值,它表示弧的起始角度(以度数表示)。
另请参见:
setAngleStart(double)

getAngleExtent

public abstract double getAngleExtent()
返回弧的角跨越。

返回:
一个 double 值,它表示弧的角跨越(以度数表示)。
另请参见:
setAngleExtent(double)

getArcType

public int getArcType()
返回弧的弧闭合类型:OPENCHORDPIE

返回:
在此类中定义的整数常量闭合类型之一。
另请参见:
setArcType(int)

getStartPoint

public Point2D getStartPoint()
返回弧的起始点。此点是从由起始角度定义的中心发出的射线与弧的椭圆边界的交点。

返回:
Point2D 对象,它表示弧起始点的 x、y 坐标。

getEndPoint

public Point2D getEndPoint()
返回弧的结束点。此点是从由起始角度加上弧的角跨越所定义的中心发出的射线与弧的椭圆边界的交点。

返回:
Point2D 对象,它表示弧结束点的 x、y 坐标。

setArc

public abstract void setArc(double x,
                            double y,
                            double w,
                            double h,
                            double angSt,
                            double angExt,
                            int closure)
将此弧的位置、大小、角跨越和闭合类型设置为指定的 double 值。

参数:
x, y - 弧的左上角的坐标。
w - 完整椭圆的总宽度,此弧是该椭圆的一部分。
h - 完整椭圆的总高度,此弧是该椭圆的一部分。
angSt - 以度数表示的弧的起始角度。
angExt - 以度数表示的弧的角跨越。
closure - 弧的闭合类型:OPENCHORDPIE

setArc

public void setArc(Point2D loc,
                   Dimension2D size,
                   double angSt,
                   double angExt,
                   int closure)
将此弧的位置、大小、角跨越和闭合类型设置为指定值。

参数:
loc - 表示弧的左上角坐标的 Point2D
size - 表示完整椭圆宽度和高度的 Dimension2D,此弧是该椭圆的一部分。
angSt - 以度数表示的弧的起始角度。(以 double 精度指定。)
angExt - 以度数表示的弧的角跨越。(以 double 精度指定。)
closure - 弧的闭合类型:OPENCHORDPIE

setArc

public void setArc(Rectangle2D rect,
                   double angSt,
                   double angExt,
                   int closure)
将此弧的位置、大小、角跨越和闭合类型设置为指定值。

参数:
rect - 定义完整椭圆(此弧是其一个部分)外部边界的边界矩形。
angSt - 以度数表示的弧的起始角度。(以 double 精度指定。)
angExt - 以度数表示的弧的角跨越。(以 double 精度指定。)
closure - 弧的闭合类型:OPENCHORDPIE

setArc

public void setArc(Arc2D a)
将此弧设置为与指定弧相同。

参数:
a - 用于设置弧的值的 Arc2D

setArcByCenter

public void setArcByCenter(double x,
                           double y,
                           double radius,
                           double angSt,
                           double angExt,
                           int closure)
将此弧的位置、边界、角跨越和闭合类型设置为指定值。弧是由中心点和半径(而不是完整椭圆的边界框)定义的。

参数:
x, y - 弧中心的坐标。(以 double 精度指定。)
radius - 弧的半径。(以 double 精度指定。)
angSt - 以度数表示的弧的起始角度。(以 double 精度指定。)
angExt - 以度数表示的弧的角跨越。(以 double 精度指定。)
closure - 弧的闭合类型:OPENCHORDPIE

setArcByTangent

public void setArcByTangent(Point2D p1,
                            Point2D p2,
                            Point2D p3,
                            double radius)
将此弧的位置、边界和角跨越设置为指定值。弧的起始角度是点 (p1, p2) 指定的线的正切,结束角度是点 (p2, p3) 指定的线的正切,并且弧具有指定的半径。

参数:
p1 - 定义弧的第一个点。弧的起始角度是点 (p1, p2) 指定的线的正切。
p2 - 定义弧的第二个点。弧的起始角度是点 (p1, p2) 指定的线的正切。弧的结束角度是点 (p2, p3) 指定的线的正切。
p3 - 定义弧的第三个点。弧的结束角度是点 (p2, p3) 指定的线的正切。
radius - 弧的半径。(以 double 精度指定。)

setAngleStart

public abstract void setAngleStart(double angSt)
将此弧的起始角度设置为指定的 double 值。

参数:
angSt - 以度数表示的弧的起始角度。
另请参见:
getAngleStart()

setAngleExtent

public abstract void setAngleExtent(double angExt)
将此弧的角跨越设置为指定的 double 值。

参数:
angExt - 以度数表示的弧的角跨越。
另请参见:
getAngleExtent()

setAngleStart

public void setAngleStart(Point2D p)
将此弧的起始角度设置为由指定点定义、相对于此弧的中心的角度。弧的角跨越与上述设置相同。

参数:
p - 定义起始角度的 Point2D
另请参见:
getAngleStart()

setAngles

public void setAngles(double x1,
                      double y1,
                      double x2,
                      double y2)
使用两组坐标设置此弧的起始角度和角跨越。第一组坐标用于确定相对于弧中心起始点的角度。第二组坐标用于确定相对于弧中心结束点的角度。弧始终是非空的,按逆时针方向以弧形从第一点延伸到第二点。

参数:
x1, y1 - 弧起始点的坐标。
x2, y2 - 弧结束点的坐标。

setAngles

public void setAngles(Point2D p1,
                      Point2D p2)
使用两个点设置此弧的起始角度和角跨越。第一点用于确定相对于弧中心起始点的角度。第二点用于确定相对于弧中心结束点的角度。弧始终是非空的,按逆时针方向以弧形从第一点延伸到第二点。

参数:
p1 - 定义弧起始点的 Point2D
p2 - 定义弧结束点的 Point2D

setArcType

public void setArcType(int type)
将此弧的闭合类型设置为指定值:OPENCHORDPIE

参数:
type - 表示此弧闭合类型的整数常量:OPENCHORDPIE
抛出:
IllegalArgumentException - 如果 type 不是 0、1 或 2。
另请参见:
getArcType()

setFrame

public void setFrame(double x,
                     double y,
                     double w,
                     double h)
将此弧外部边界的位置和大小设置为指定值。

指定者:
RectangularShape 中的 setFrame
参数:
x, y - 弧边界框左上角的坐标。(以 double 精度指定。)
w - 弧边界框的宽度。(以 double 精度指定。)
h - 弧边界框的高度。(以 double 精度指定。)
另请参见:
RectangularShape.getFrame()

getBounds2D

public Rectangle2D getBounds2D()
返回弧的高精度边界框。边界框仅包含此 Arc2D 的一部分,即起始角度和结束角度之间的部分;如果此 Arc2D 的闭合类型为 PIE,则还包含扇形边。

此方法不同于 getBoundsgetBounds 方法仅返回此 Arc2D 封闭椭圆的边界,而不考虑此 Arc2D 的起始角度和结束角度。

返回:
表示弧边界框的 Rectangle2D
另请参见:
Shape.getBounds()

makeBounds

protected abstract Rectangle2D makeBounds(double x,
                                          double y,
                                          double w,
                                          double h)
构造一个适当精度的 Rectangle2D,以保存为作为此弧的边界框而计算出的参数。

参数:
x, y - 边界框左上角的坐标。(以 double 精度指定。)
w - 边界框的宽度。(以 double 精度指定。)
h - 边界框的高度。(以 double 精度指定。)
返回:
作为此弧边界框的 Rectangle2D

containsAngle

public boolean containsAngle(double angle)
确定指定的角度是否位于弧的角跨越内。

参数:
angle - 要测试的角度。(以 double 精度指定。)
返回:
如果弧包含角度,则返回 true;如果弧不包含角度,则返回 false

contains

public boolean contains(double x,
                        double y)
确定指定的点是否位于弧的边界内。

参数:
x, y - 要测试的点的坐标。(以 double 精度指定。)
返回:
如果点位于弧的边界内,则返回 true;如果点位于弧的边界外,则返回 false

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
确定弧的内部与指定矩形的内部是否相交。

参数:
x, y - 矩形左上角的坐标。(以 double 精度指定。)
w - 矩形的宽度。(以 double 精度指定。)
h - 矩形的高度。(以 double 精度指定。)
返回:
如果弧与矩形相交,则返回 true;如果弧与矩形不相交,则返回 false
另请参见:
Area

contains

public boolean contains(double x,
                        double y,
                        double w,
                        double h)
确定弧的内部是否完全包含指定的矩形。

参数:
x, y - 矩形左上角的坐标。(以 double 精度指定。)
w - 矩形的宽度。(以 double 精度指定。)
h - 矩形的高度。(以 double 精度指定。)
返回:
如果弧包含矩形,则返回 true;如果弧不包含矩形,则返回 false
另请参见:
Area, Shape.intersects(double, double, double, double)

contains

public boolean contains(Rectangle2D r)
确定弧的内部是否完全包含指定的矩形。

指定者:
接口 Shape 中的 contains
覆盖:
RectangularShape 中的 contains
参数:
r - 要测试的 Rectangle2D
返回:
如果弧包含矩形,则返回 true;如果弧不包含矩形,则返回 false
另请参见:
Shape.contains(double, double, double, double)

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
返回定义弧边界的迭代对象。此迭代器是多线程安全的。Arc2D 保证对弧几何形状的修改不影响该几何形状任何进行中的迭代。

参数:
at - 可选的 AffineTransform,应用于迭代中返回坐标,如果需要未转换的坐标,则为 null。
返回:
定义弧边界的 PathIterator

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策