java.lang.Object java.awt.MultipleGradientPaint java.awt.RadialGradientPaint
public final class RadialGradientPaint
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);
此图像演示了对上述示例代码(使用了非居中焦点)使用三种循环方法时的情形:
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 |
构造方法详细信息 |
---|
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
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
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_CYCLE
、
REFLECT
或
REPEAT
NullPointerException
- 如果
fractions
数组为 null;或者
colors
数组为 null;或者
cycleMethod
为 null
IllegalArgumentException
- 如果
radius
非正;或者
fractions.length != colors.length
;或者
colors
大小小于 2;或者
fractions
值小于 0.0 或大于 1.0;或者没有严格按升序提供
fractions
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_CYCLE
、
REFLECT
或
REPEAT
NullPointerException
- 如果
center
点为 null;或者
fractions
数组为 null;或者
colors
数组为 null;或者
cycleMethod
为 null
IllegalArgumentException
- 如果
radius
非正;或者
fractions.length != colors.length
;或者
colors
大小小于 2;或者
fractions
值小于 0.0 或大于 1.0;或者没有严格按升序提供
fractions
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_CYCLE
、
REFLECT
或
REPEAT
NullPointerException
- 如果
fractions
数组为 null;或者
colors
数组为 null;或者
cycleMethod
为 null
IllegalArgumentException
- 如果
radius
非正;或者
fractions.length != colors.length
;或者
colors
大小小于 2;或者
fractions
值小于 0.0 或大于 1.0;或者没有严格按升序提供
fractions
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_CYCLE
、
REFLECT
或
REPEAT
NullPointerException
- 如果有一个点为 null;或者
fractions
数组为 null;或者
colors
数组为 null;或者
cycleMethod
为 null
IllegalArgumentException
- 如果
radius
非正;或者
fractions.length != colors.length
;或者
colors
大小小于 2;或者
fractions
值小于 0.0 或大于 1.0;或者没有严格按升序提供
fractions
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_CYCLE
、
REFLECT
或
REPEAT
colorSpace
- 用于插值操作的颜色空间,该参数为
SRGB
或
LINEAR_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
public RadialGradientPaint(Rectangle2D gradientBounds, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
SRGB
颜色空间的
RadialGradientPaint
。
RadialGradientPaint
的渐变圆是由给定的边界框定义的。
此构造方法是表达以下(等效)代码的一种简便方式:
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_CYCLE
、
REFLECT
或
REPEAT
NullPointerException
- 如果
gradientBounds
为 null;或者
fractions
数组为 null;或者
colors
数组为 null;或者
cycleMethod
为 null
IllegalArgumentException
- 如果
gradientBounds
为空;或者
fractions.length != colors.length
;或者
colors
大小小于 2;或者
fractions
值小于 0.0 或大于 1.0;或者没有严格按升序提供
fractions
方法详细信息 |
---|
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
public Point2D getCenterPoint()
Point2D
对象,它是中心点的副本
public Point2D getFocusPoint()
Point2D
对象,它是焦点的副本
public float getRadius()