JavaTM Platform
Standard Ed. 6

java.awt
类 LinearGradientPaint

java.lang.Object
  继承者 java.awt.MultipleGradientPaint
      继承者 java.awt.LinearGradientPaint
所有已实现的接口:
Paint, Transparency

public final class LinearGradientPaint
extends MultipleGradientPaint

LinearGradientPaint 类提供利用线性颜色渐变模式填充 Shape 的方式。用户可以指定两种或多种渐变颜色,并且此绘制将在颜色与颜色之间提供一个插值。用户还可以指定起始点和结束点,它们定义了颜色渐变在用户空间中的开始和结束位置。

用户必须提供一个 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}
 

在填充起始点和结束点以外的颜色时,用户也可以选择 LinearGradientPaint 应执行的动作。如果没有指定循环方法,则将默认选择 NO_CYCLE,这意味着将使用端点颜色填充剩余的区域。

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

以下代码演示了 LinearGradientPaint 的典型用法:

Point2D start = new Point2D.Float(0, 0);
Point2D end = new Point2D.Float(50, 50);
float[] dist = {0.0f, 0.2f, 1.0f};
Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
LinearGradientPaint p =
new LinearGradientPaint(start, end, dist, colors);
 

此代码将创建一个 LinearGradientPaint,它插入到渐变前 20% 的红色和白色之间,以及渐变剩余 80% 的白色和蓝色之间。

此图像演示了对以上示例代码使用三种循环方法时的情形:

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

嵌套类摘要
 
从类 java.awt.MultipleGradientPaint 继承的嵌套类/接口
MultipleGradientPaint.ColorSpaceType, MultipleGradientPaint.CycleMethod
 
字段摘要
 
从接口 java.awt.Transparency 继承的字段
BITMASK, OPAQUE, TRANSLUCENT
 
构造方法摘要
LinearGradientPaint(float startX, float startY, float endX, float endY, float[] fractions, Color[] colors)
          构造一个具有默认 NO_CYCLE 重复方法和 SRGB 颜色空间的 LinearGradientPaint
LinearGradientPaint(float startX, float startY, float endX, float endY, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          构造一个具有默认 SRGB 颜色空间的 LinearGradientPaint
LinearGradientPaint(Point2D start, Point2D end, float[] fractions, Color[] colors)
          构造一个具有默认 NO_CYCLE 重复方法和 SRGB 颜色空间的 LinearGradientPaint
LinearGradientPaint(Point2D start, Point2D end, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
          构造一个具有默认 SRGB 颜色空间的 LinearGradientPaint
LinearGradientPaint(Point2D start, Point2D end, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod, MultipleGradientPaint.ColorSpaceType colorSpace, AffineTransform gradientTransform)
          构造一个 LinearGradientPaint
 
方法摘要
 PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform transform, RenderingHints hints)
          创建并返回用来生成颜色模式的 PaintContext
 Point2D getEndPoint()
          返回渐变轴结束点的副本。
 Point2D getStartPoint()
          返回渐变轴起始点的副本。
 
从类 java.awt.MultipleGradientPaint 继承的方法
getColors, getColorSpace, getCycleMethod, getFractions, getTransform, getTransparency
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

LinearGradientPaint

public LinearGradientPaint(float startX,
                           float startY,
                           float endX,
                           float endY,
                           float[] fractions,
                           Color[] colors)
构造一个具有默认 NO_CYCLE 重复方法和 SRGB 颜色空间的 LinearGradientPaint

参数:
startX - 用户空间中渐变轴起始点的 X 坐标
startY - 用户空间中渐变轴起始点的 Y 坐标
endX - 用户空间中渐变轴结束点的 X 坐标
endY - 用户空间中渐变轴结束点的 Y 坐标
fractions - 范围从 0.0 到 1.0 之间的数字,用于指定沿渐变的颜色分布
colors - 与每个小数值相对应的颜色数组
抛出:
NullPointerException - 如果 fractions 数组为 null,或 colors 数组为 null
IllegalArgumentException - 如果起始点和结束点是同一个点;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

LinearGradientPaint

public LinearGradientPaint(float startX,
                           float startY,
                           float endX,
                           float endY,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod)
构造一个具有默认 SRGB 颜色空间的 LinearGradientPaint

参数:
startX - 用户空间中渐变轴起始点的 X 坐标
startY - 用户空间中渐变轴起始点的 Y 坐标
endX - 用户空间中渐变轴结束点的 X 坐标
endY - 用户空间中渐变轴结束点的 Y 坐标
fractions - 范围从 0.0 到 1.0 之间的数字,用于指定沿渐变的颜色分布
colors - 与每个小数值相对应的颜色数组
cycleMethod - NO_CYCLEREFLECTREPEAT
抛出:
NullPointerException - 如果 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null
IllegalArgumentException - 如果起始点和结束点是同一个点;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按照升序提供 fractions

LinearGradientPaint

public LinearGradientPaint(Point2D start,
                           Point2D end,
                           float[] fractions,
                           Color[] colors)
构造一个具有默认 NO_CYCLE 重复方法和 SRGB 颜色空间的 LinearGradientPaint

参数:
start - 用户空间中渐变轴的起始 Point2D
end - 用户空间中渐变轴的结束 Point2D
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
colors - 与每个小数值相对应的颜色数组
抛出:
NullPointerException - 如果有一个点为 null;或者 fractions 数组为 null;或者 colors 数组为 null
IllegalArgumentException - 如果起始点和结束点是同一个点;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

LinearGradientPaint

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

参数:
start - 用户空间中渐变轴的起始 Point2D
end - 用户空间中渐变轴的结束 Point2D
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
colors - 与每个小数值相对应的颜色数组
cycleMethod - NO_CYCLEREFLECTREPEAT
抛出:
NullPointerException - 如果有一个点为 null;或者 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null
IllegalArgumentException - 如果起始点和结束点为同一个点;或者 fractions.length != colors.length;或者 colors 大小小于 2;或者 fractions 值小于 0.0 或大于 1.0;或者没有严格按升序提供 fractions

LinearGradientPaint

public LinearGradientPaint(Point2D start,
                           Point2D end,
                           float[] fractions,
                           Color[] colors,
                           MultipleGradientPaint.CycleMethod cycleMethod,
                           MultipleGradientPaint.ColorSpaceType colorSpace,
                           AffineTransform gradientTransform)
构造一个 LinearGradientPaint

参数:
start - 用户空间中渐变轴的起始 Point2D
end - 用户空间中渐变轴的结束 Point2D
fractions - 0.0 到 1.0 范围内的数字,用于指定沿渐变的颜色分布
colors - 与每个小数值相对应的颜色数组
cycleMethod - NO_CYCLEREFLECTREPEAT
colorSpace - 用于插值操作的颜色空间,该参数为 SRGBLINEAR_RGB
gradientTransform - 将应用到渐变的转换
抛出:
NullPointerException - 如果有一个点为 null;或者 fractions 数组为 null;或者 colors 数组为 null;或者 cycleMethod 为 null;或者 colorSpace 为 null;或者 gradientTransform 为 null
IllegalArgumentException - 如果起始点和结束点为同一个点;或者 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

getStartPoint

public Point2D getStartPoint()
返回渐变轴起始点的副本。

返回:
Point2D 对象,它是此 LinearGradientPaint 第一种颜色着色点的副本。

getEndPoint

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

返回:
Point2D 对象,它是此 LinearGradientPaint 最后一种颜色着色点的副本

JavaTM Platform
Standard Ed. 6

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

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