Module  java.desktop
软件包  java.awt

Class LinearGradientPaint

  • All Implemented Interfaces:
    PaintTransparency


    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} 

    用户还可以通过将CycleMethod设置为REFLECTIONREPEAT来选择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
    另请参见:
    PaintGraphics2D.setPaint(java.awt.Paint)
    • 构造方法详细信息

      • LinearGradientPaint

        public LinearGradientPaint​(float startX,
                                   float startY,
                                   float endX,
                                   float endY,
                                   float[] fractions,
                                   Color[] colors)
        构造一个 LinearGradientPaint ,具有默认的 NO_CYCLE重复方法和 SRGB颜色空间。
        参数
        startX - 用户空间中梯度轴起始点的X坐标
        startY - 用户空间中梯度轴起始点的Y坐标
        endX - 用户空间中渐变轴终点的X坐标
        endY - 用户空间中梯度轴终点的Y坐标
        fractions - 范围从0.0到1.0的数字,指定渐变颜色的分布
        colors - 对应于每个小数值的颜色数组
        异常
        NullPointerException - 如果 fractions数组为空,或 colors数组为空,
        IllegalArgumentException - 如果起点和终点是相同的点,或 fractions.length != colors.lengthcolors大小小于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)
        构造一个 LinearGradientPaint ,默认为 SRGB颜色空间。
        参数
        startX - 用户空间中梯度轴起始点的X坐标
        startY - 用户空间中梯度轴起始点的Y坐标
        endX - 用户空间中渐变轴终点的X坐标
        endY - 用户空间中渐变轴终点的Y坐标
        fractions - 范围从0.0到1.0的数字,指定沿梯度的颜色分布
        colors - 对应于每个小数值的颜色数组
        cycleMethod -无论是 NO_CYCLEREFLECT ,或 REPEAT
        异常
        NullPointerException - 如果 fractions数组为空,或 colors数组为空,或 cycleMethod为空
        IllegalArgumentException - 如果起点和终点是相同的点,或 fractions.length != colors.lengthcolors大小小于2,或者 fractions值小于0.0或大于1.0,或者 fractions不是以严格增加的顺序提供
      • LinearGradientPaint

        public LinearGradientPaint​(Point2D start,
                                   Point2D end,
                                   float[] fractions,
                                   Color[] colors)
        构造一个 LinearGradientPaint ,具有默认的 NO_CYCLE重复方法和 SRGB颜色空间。
        参数
        start - 渐变轴启动 Point2D在用户空间
        end - 用户空间中的渐变轴端 Point2D
        fractions - 范围从0.0到1.0的数字,指定沿梯度的颜色分布
        colors - 对应于每个分数值的颜色数组
        异常
        NullPointerException - 如果其中一个点为空,或 fractions数组为空,或 colors数组为空
        IllegalArgumentException - 如果起点和终点是相同的点,或者 fractions.length != colors.lengthcolors大小小于2,或者 fractions值小于0.0或大于1.0,或者 fractions不以严格的增加顺序提供
      • LinearGradientPaint

        public LinearGradientPaint​(Point2D start,
                                   Point2D end,
                                   float[] fractions,
                                   Color[] colors,
                                   MultipleGradientPaint.CycleMethod cycleMethod)
        构造一个 LinearGradientPaint与默认的 SRGB颜色空间。
        参数
        start - 用户空间中的渐变轴启动 Point2D
        end - 用户空间中的渐变轴端 Point2D
        fractions - 范围从0.0到1.0的数字,指定沿梯度的颜色分布
        colors - 与每个分数值对应的颜色数组
        cycleMethod -无论是 NO_CYCLEREFLECT ,或 REPEAT
        异常
        NullPointerException - 如果其中一个点为空,或 fractions数组为空,或 colors数组为空,或 cycleMethod为空
        IllegalArgumentException - 如果起点和终点是相同的点,或 fractions.length != colors.lengthcolors大小小于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_CYCLEREFLECT ,或 REPEAT
        colorSpace - 用于插值的颜色空间, SRGBLINEAR_RGB
        gradientTransform - 转换为应用于渐变
        异常
        NullPointerException - 如果其中一个点为空,或 fractions数组为空,或 colors数组为空,或 cycleMethod为空,或 colorSpace为空,或 gradientTransform为空
        IllegalArgumentException - 如果起点和终点是相同点,或 fractions.length != colors.lengthcolors小于2,或者 fractions值小于0.0或大于1.0,或 fractions不以严格增加的顺序提供
    • 方法详细信息

      • getStartPoint

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

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