模块  java.desktop
软件包  java.awt

Class LinearGradientPaint

  • 实现的所有接口
    PaintTransparency

    public final class LinearGradientPaintextends 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)
        使用默认的 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.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)
        使用默认的 SRGB颜色空间构造 LinearGradientPaint
        参数
        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)
        使用默认的 NO_CYCLE重复方法和 SRGB颜色空间构造一个 LinearGradientPaint
        参数
        start - 梯度轴在用户空间中启动 Point2D
        end - 用户空间中的渐变轴结束 Point2D
        fractions - 数字范围从0.0到1.0,指定沿渐变的颜色分布
        colors - 对应于每个小数值的颜色数组
        异常
        NullPointerException - 如果其中一个点为null,或者 fractions数组为null,或者 colors数组为null
        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)
        使用默认的 SRGB颜色空间构造一个 LinearGradientPaint
        参数
        start - 用户空间中的渐变轴启动 Point2D
        end - 用户空间中的渐变轴结束 Point2D
        fractions - 数字范围从0.0到1.0,指定沿渐变的颜色分布
        colors - 对应于每个小数值的颜色数组
        cycleMethod -无论是 NO_CYCLEREFLECT ,或 REPEAT
        异常
        NullPointerException - 如果其中一个点为null,或者 fractions数组为null,或者 colors数组为null,或者 cycleMethod为null
        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最后一种颜色的点的副本