java.awt

接口
异常
错误
java.lang.Object
  继承者 java.awt.MultipleGradientPaint
      继承者 java.awt.RadialGradientPaint
所有已实现的接口:
Paint, Transparency

public final class RadialGradientPaint
     
extends MultipleGradientPaint

RadialGradientPaint 类提供使用圆形辐射颜色渐变模式填充某一形状的方式。用户可以指定两种或多种渐变颜色,此绘制将在颜色与颜色之间提供一个插值。

用户必须指定用于控制渐变模式的圆,可用中心点和半径对该圆进行描述。用户也可以在该圆内部指定一个独立焦点,由它控制渐变的第一种颜色的位置。默认情况下,该焦点被设置为圆心。

此绘制将渐变的第一种颜色映射到焦点,将渐变的最后一种颜色映射到圆周,在两者之间平滑地插入用户指定的任意中间颜色。因此,从焦点到圆周之间绘制的任何直线都将跨越所有渐变颜色。

在圆的半径外部指定焦点将导致焦点被设置为焦点-中心线与圆周的交点。

用户必须提供一个 float 数组,用于指定如何沿渐变分布颜色。这些值的范围从 0.0 到 1.0,其作用与沿渐变的关键帧类似(它们标记渐变应完全变为某种特定颜色的位置)。

在用户没有将第一个关键帧值设置为等于 0 和/或将最后一个关键帧值设置为等于 1 的情况下,将在这些位置创建关键帧,并且第一种颜色和最后一种颜色将在这些位置处重复。因此,如果用户指定以下数组来构造渐变:

{Color.BLUE, Color.RED}, {.3f, .7f}
 
那么此渐变将转换为一个带有以下关键帧的渐变:
{Color.BLUE, Color.BLUE, Color.RED, Color.RED}, {0f, .3f, .7f, 1f}
 

在填充圆的半径边界以外的颜色时,用户也可以选择 RadialGradientPaint 应执行的动作。如果没有指定循环方法,则将默认选择 NO_CYCLE,这意味着将使用最后一个关键帧的颜色来填充剩余的区域。

colorSpace 参数允许用户指定应在哪一种颜色空间(默认 sRGB 或线性 RGB)中执行插值操作。

以下代码演示了 RadialGradientPaint 的典型用法,其中中心点和焦点是同一个点:

Point2D center = new Point2D.Float(50, 50);
float radius = 25;
float[] dist = {0.0f, 0.2f, 1.0f};
Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
RadialGradientPaint p =
new RadialGradientPaint(center, radius, dist, colors);
 

此图像用默认(居中)焦点演示了对以上示例代码使用三种循环方法时的情形:

它也可以使用以下代码指定一个非居中的焦点:

Point2D center = new Point2D.Float(50, 50);
float radius = 25;
Point2D focus = new Point2D.Float(40, 40);
float[] dist = {0.0f, 0.2f, 1.0f};
Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
RadialGradientPaint p =
new RadialGradientPaint(center, radius, focus,
dist, colors,
CycleMethod.NO_CYCLE);
 

此图像演示了对上述示例代码(使用了非居中焦点)使用三种循环方法时的情形:

从以下版本开始:
1.6
另请参见:
Paint, Graphics2D.setPaint(java.awt.Paint)

嵌套类摘要
 
从类 java.awt.MultipleGradientPaint 继承的嵌套类/接口
MultipleGradientPaint.ColorSpaceType, MultipleGradientPaint.CycleMethod
 
字段摘要
 
从接口 java.awt.Transparency 继承的字段
BITMASK, OPAQUE, TRANSLUCENT
 
构造方法摘要
RadialGradientPaint(float cx, float cy, float radius, float[] fractions, Color[] colors)
          用中心点作为焦点,构造一个具有默认 NO_CYCLE 重复方法和 SRGB 颜色空间的 RadialGradientPaint
RadialGradientPaint(float cx, float cy, float radius, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          用中心点作为焦点,构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint
RadialGradientPaint(float cx, float cy, float radius, float fx, float fy, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint
RadialGradientPaint(Point2D center, float radius, float[] fractions, Color[] colors)
          用中心点作为焦点,构造一个具有默认 NO_CYCLE 重复方法和 SRGB 颜色空间的 RadialGradientPaint
RadialGradientPaint(Point2D center, float radius, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          用中心点作为焦点,构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint
RadialGradientPaint(Point2D center, float radius, Point2D focus, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint
RadialGradientPaint(Point2D center, float radius, Point2D focus, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod, MultipleGradientPaint.ColorSpaceType colorSpace, AffineTransform gradientTransform)
          构造一个 RadialGradientPaint
RadialGradientPaint(Rectangle2D gradientBounds, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint
 
方法摘要
 PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform transform, RenderingHints hints)
          创建并返回用来生成颜色模式的 PaintContext
 Point2D getCenterPoint()
          返回辐射状渐变中心点的副本。
 Point2D getFocusPoint()
          返回渐变轴结束点的副本。
 float getRadius()
          返回定义辐射状渐变的圆的半径。
 
从类 java.awt.MultipleGradientPaint 继承的方法
getColors, getColorSpace, getCycleMethod, getFractions, getTransform, getTransparency
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

RadialGradientPaint

public RadialGradientPaint(float cx,
                           float cy,
                           float radius,
                           float[] fractions,
                           Color[] colors)
用中心点作为焦点,构造一个具有默认 NO_CYCLE 重复方法和 SRGB 颜色空间的 RadialGradientPaint

参数:
cx - 定义渐变的圆的中心点在用户空间中的 X 坐标。渐变的最后一种颜色被映射到圆周上。
cy - 定义渐变的圆的中心点在用户空间中的 Y 坐标。渐变的最后一种颜色被映射到圆周上。
radius - 定义颜色渐变范围的圆的半径
fractions - 范围从 0.0 到 1.0 之间的数字,用于指定沿渐变的颜色分布
colors - 在渐变中使用的颜色数组。第一种颜色用于焦点处,最后一种颜色环绕在圆周上。
抛出:
NullPointerException - 如果 fractions 数组为 null;或者 colors 数组为 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Point2D center,
                           float radius,
                           float[] fractions,
                           Color[] colors)
用中心点作为焦点,构造一个具有默认 NO_CYCLE 重复方法和 SRGB 颜色空间的 RadialGradientPaint

参数:
center - 用户空间中定义渐变的圆的中心点
radius - 圆的半径,用于定义颜色渐变的范围
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
colors - 在渐变中使用的颜色数组。第一种颜色用于焦点处,最后一种颜色环绕在圆周上。
抛出:
NullPointerException - 如果 center 点为 null;或者 fractions 数组为 null;或者 colors 数组为 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(float cx,
                           float cy,
                           float radius,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
用中心点作为焦点,构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint

参数:
cx - 定义渐变的圆的中心点在用户空间中的 X 坐标。渐变的最后一种颜色被映射到圆周上。
cy - 定义渐变的圆的中心点在用户空间中的 Y 坐标。渐变的最后一种颜色被映射到圆周上。
radius - 定义颜色渐变范围的圆的半径
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
colors - 在渐变中使用的颜色数组。第一种颜色用于焦点处,最后一种颜色环绕在圆周上。
cycleMethod - NO_CYCLEREFLECTREPEAT
抛出:
NullPointerException - 如果 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Point2D center,
                           float radius,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
用中心点作为焦点,构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint

参数:
center - 用户空间中定义渐变的圆的中心点
radius - 圆的半径,用于定义颜色渐变的范围
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
colors - 在渐变中使用的颜色数组。第一种颜色用于焦点处,最后一种颜色环绕在圆周上。
cycleMethod - NO_CYCLEREFLECTREPEAT
抛出:
NullPointerException - 如果 center 点为 null;或者 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(float cx,
                           float cy,
                           float radius,
                           float fx,
                           float fy,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint

参数:
cx - 定义渐变的圆的中心点在用户空间中的 X 坐标。渐变的最后一种颜色被映射到圆周上。
cy - 定义渐变的圆的中心点在用户空间中的 Y 坐标。渐变的最后一种颜色被映射到圆周上。
radius - 圆的半径,用于定义颜色渐变的范围
fx - 第一种颜色所映射的点在用户空间中的 X 坐标
fy - 第一种颜色所映射的点在用户空间中的 Y 坐标
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
colors - 在渐变中使用的颜色数组。第一种颜色用于焦点处,最后一种颜色环绕在圆周上。
cycleMethod - NO_CYCLEREFLECTREPEAT
抛出:
NullPointerException - 如果 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Point2D center,
                           float radius,
                           Point2D focus,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
构造一个具有默认 SRGB 颜色空间的 RadialGradientPaint

参数:
center - 用户空间中定义渐变的圆的中心点。渐变的最后一种颜色被映射到圆周上。
radius - 圆的半径,用于定义颜色渐变的范围
focus - 用户空间中第一种颜色映射到的点
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
在渐变中使用的颜色数组。第一种颜色用于焦点处,最后一种颜色环绕在圆周上。 -
cycleMethod - NO_CYCLEREFLECTREPEAT
抛出:
NullPointerException - 如果有一个点为 null;或者 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Point2D center,
                           float radius,
                           Point2D focus,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod,
                           MultipleGradientPaint.ColorSpaceType colorSpace,
                           AffineTransform gradientTransform)
构造一个 RadialGradientPaint

参数:
center - 用户空间中定义渐变的圆的中心点。渐变的最后一种颜色被映射到圆周上。
radius - 圆的半径,用于定义颜色渐变的范围
focus - 用户空间中第一种颜色映射到的点
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
在渐变中使用的颜色数组。第一种颜色用于焦点处,最后一种颜色环绕在圆周上。 -
cycleMethod - NO_CYCLEREFLECTREPEAT
colorSpace - 用于插值操作的颜色空间,该参数为 SRGBLINEAR_RGB
gradientTransform - 要应用于渐变的变换
抛出:
NullPointerException - 如果有一个点为 null;或者 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null;或者 colorSpace 为 null;或者 gradientTransform 为 null
IllegalArgumentException - 如果 radius 非正;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

RadialGradientPaint

public RadialGradientPaint(Rectangle2D gradientBounds,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
构造一个具有默认 SRGB 颜色空间的 RadialGradientPaintRadialGradientPaint 的渐变圆是由给定的边界框定义的。

此构造方法是表达以下(等效)代码的一种简便方式:

double gw = gradientBounds.getWidth();
double gh = gradientBounds.getHeight();
double cx = gradientBounds.getCenterX();
double cy = gradientBounds.getCenterY();
Point2D center = new Point2D.Double(cx, cy);

AffineTransform gradientTransform = new AffineTransform();
gradientTransform.translate(cx, cy);
gradientTransform.scale(gw / 2, gh / 2);
gradientTransform.translate(-cx, -cy);

RadialGradientPaint gp =
new RadialGradientPaint(center, 1.0f, center,
fractions, colors,
cycleMethod,
ColorSpaceType.SRGB,
gradientTransform);
 

参数:
gradientBounds - 用户空间中定义渐变最外层范围的边界框
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
colors - 在渐变中使用的颜色数组。第一种颜色用于焦点处,最后一种颜色环绕在圆周上。
cycleMethod - NO_CYCLEREFLECTREPEAT
抛出:
NullPointerException - 如果 gradientBounds 为 null;或者 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null
IllegalArgumentException - 如果 gradientBounds 为空;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions
方法详细信息

createContext

public PaintContext createContext(ColorModel cm,
                                  Rectangle deviceBounds,
                                  Rectangle2D userBounds,
                                  AffineTransform transform,
                                  RenderingHints hints)
创建并返回用来生成颜色模式的 PaintContext。因为传递给 createContext 的 ColorModel 参数只是一个提示,所以 Paint 的实现应该接受 ColorModel 的 null 参数。注意,如果应用程序没有首选的特定 ColorModel,则为 null 的 ColorModel 参数将给予 Paint 实现完全的选择余地,使其在光栅处理中使用其首选最高效的 ColorModel。

因为 API 文档在 1.4 版本之前没有关于此项的具体描述,因此可能有一些 Paint 实现不能接受 null ColorModel 参数。如果开发人员正在编写代码将 null ColorModel 参数从任意源传递给 Paint 对象的 createContext 方法,则为了实现安全的编码,应该为这些对象构造一个非 null ColorModel,使其抛出 NullPointerException

参数:
cm - 接收 Paint 数据的 ColorModel。这只用作一个提示。
deviceBounds - 正在呈现的图形图元的设备空间边界框
userBounds - 正在呈现的图形图元的用户空间边界框
transform - 从用户空间到设备空间的 AffineTransform
hints - 上下文对象用于选择所呈现内容的提示
返回:
生成颜色模式的 PaintContext
另请参见:
PaintContext

getCenterPoint

public Point2D getCenterPoint()
返回辐射状渐变中心点的副本。

返回:
Point2D 对象,它是中心点的副本

getFocusPoint

public Point2D getFocusPoint()
返回渐变轴结束点的副本。

返回:
Point2D 对象,它是焦点的副本

getRadius

public float getRadius()
返回定义辐射状渐变的圆的半径。

返回:
定义辐射状渐变的圆的半径