Module java.desktop
Package java.awt

Class LinearGradientPaint

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

public final class LinearGradientPaint extends MultipleGradientPaint
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设置为REFLECTIONREPEAT。在任何反射或重复渐变的任意两种颜色之间的距离与在起始点和结束点之间的这些相同颜色之间的距离相同。请注意,由于以像素为粒度进行采样,可能会出现一些距离的轻微变化。如果未指定循环方法,则默认将选择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
参见:
  • 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_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

      @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 - 用于插值的颜色空间,可选值为 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 没有按严格递增顺序提供
  • Method Details

    • createContext

      public PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform transform, RenderingHints hints)
      创建并返回一个用于生成线性颜色渐变模式的 PaintContext。查看 Paint 接口中方法的 规范,了解有关空参数处理的信息。
      参数:
      cm - 表示调用者接收像素数据最方便格式的首选 ColorModel,如果没有偏好,则为 null
      deviceBounds - 正在呈现的图形基元的设备空间边界框。
      userBounds - 正在呈现的图形基元的用户空间边界框。
      transform - 从用户空间到设备空间的 AffineTransform
      hints - 上下文对象可以使用的提示集,用于在渲染替代方案之间进行选择。
      返回:
      用于生成颜色模式的 PaintContext
      参见:
    • getStartPoint

      public Point2D getStartPoint()
      返回渐变轴起点的副本。
      返回:
      一个 Point2D 对象,是此 LinearGradientPaint 的第一个颜色锚定点的副本
    • getEndPoint

      public Point2D getEndPoint()
      返回渐变轴终点的副本。
      返回:
      一个 Point2D 对象,是此 LinearGradientPaint 的最后一个颜色锚定点的副本