java.lang.Object
java.awt.MultipleGradientPaint
java.awt.LinearGradientPaint
- 所有已实现的接口:
-
Paint
,Transparency
LinearGradientPaint
类提供了一种填充Shape
的线性颜色渐变模式。用户可以指定两种或更多渐变颜色,该绘制将在每种颜色之间进行插值。用户还需指定开始和结束点,定义颜色渐变应该从何处开始和结束。
用户必须提供一个浮点数数组,指定如何沿着渐变分布颜色。这些值应该在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
对象在填充起始点和结束点之外的空间时采取的操作,通过将CycleMethod
设置为REFLECTION
或REPEAT
。在任何反射或重复渐变的任意两种颜色之间的距离与在起始点和结束点之间的这些相同颜色之间的距离相同。请注意,由于以像素为粒度进行采样,可能会出现一些距离的轻微变化。如果未指定循环方法,则默认将选择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
- 参见:
-
Nested Class Summary
Nested classes/interfaces declared in class java.awt.MultipleGradientPaint
MultipleGradientPaint.ColorSpaceType, MultipleGradientPaint.CycleMethod
-
Field Summary
Fields declared in interface java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT
-
Constructor Summary
ConstructorDescriptionLinearGradientPaint
(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
。 -
Method Summary
Modifier and TypeMethodDescriptioncreateContext
(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform transform, RenderingHints hints) 创建并返回用于生成线性颜色渐变模式的PaintContext
。返回渐变轴终点的副本。返回渐变轴起点的副本。Methods declared in class java.awt.MultipleGradientPaint
getColors, getColorSpace, getCycleMethod, getFractions, getTransform, getTransparency
-
Constructor Details
-
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_CYCLE
、REFLECT
或REPEAT
之一 - 抛出:
-
NullPointerException
- 如果fractions
数组为null,或colors
数组为null,或cycleMethod
为null -
IllegalArgumentException
- 如果起点和终点是相同点,或fractions.length != colors.length
,或colors
大小小于2,或fractions
值小于0.0或大于1.0,或fractions
未按严格递增顺序提供
-
LinearGradientPaint
构造一个带有默认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_CYCLE
、REFLECT
或REPEAT
之一 - 抛出:
-
NullPointerException
- 如果其中一个点为null,或fractions
数组为null,或colors
数组为null,或cycleMethod
为null -
IllegalArgumentException
- 如果起点和终点是相同点,或fractions.length != colors.length
,或colors
大小小于2,或fractions
值小于0.0或大于1.0,或fractions
未按严格递增顺序提供
-
LinearGradientPaint
@ConstructorProperties({"startPoint","endPoint","fractions","colors","cycleMethod","colorSpace","transform"}) 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_CYCLE
,REFLECT
, 或REPEAT
-
colorSpace
- 用于插值的颜色空间,可选值为SRGB
或LINEAR_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
没有按严格递增顺序提供
-
-
Method Details
-
createContext
public PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform transform, RenderingHints hints) - 参数:
-
cm
- 表示调用者接收像素数据最方便格式的首选ColorModel
,如果没有偏好,则为null
。 -
deviceBounds
- 正在呈现的图形基元的设备空间边界框。 -
userBounds
- 正在呈现的图形基元的用户空间边界框。 -
transform
- 从用户空间到设备空间的AffineTransform
。 -
hints
- 上下文对象可以使用的提示集,用于在渲染替代方案之间进行选择。 - 返回:
-
用于生成颜色模式的
PaintContext
。 - 参见:
-
getStartPoint
返回渐变轴起点的副本。- 返回:
-
一个
Point2D
对象,是此LinearGradientPaint
的第一个颜色锚定点的副本
-
getEndPoint
返回渐变轴终点的副本。- 返回:
-
一个
Point2D
对象,是此LinearGradientPaint
的最后一个颜色锚定点的副本
-