Spec-Zone.ru › OpenJDK 27

Класс RadialGradientPaint

java.lang.Object
java.awt.MultipleGradientPaint
java.awt.RadialGradientPaint
Все реализованные интерфейсы:
Paint, Transparency
public final class RadialGradientPaint extends MultipleGradientPaint
Класс RadialGradientPaint позволяет заполнить фигуру круговым радиальным цветовым градиентом. Пользователь может указать 2 или более цветов градиента, а это средство рисования выполнит интерполяцию между каждым цветом.

Пользователь должен указать круг, задающий градиентный узор, который определяется центральной точкой и радиусом. Также пользователь может указать отдельную фокусную точку внутри этого круга, задающую расположение первого цвета градиента. По умолчанию фокусная точка совпадает с центром круга.

Это средство рисования сопоставляет первый цвет градиента с фокусной точкой, а последний цвет — с окружностью круга, плавно выполняя интерполяцию для любых промежуточных цветов, заданных пользователем. Таким образом, любая линия, проведённая от фокусной точки до окружности, проходит через все цвета градиента.

Если фокусная точка находится за пределами радиуса круга, кольца градиентного узора будут центрированы в точке, расположенной непосредственно внутри края круга в направлении фокусной точки. При отрисовке будет использоваться это скорректированное положение, как если бы оно было заданной фокусной точкой.

Пользователь должен предоставить массив значений типа 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}

Пользователь также может выбрать действие объекта RadialGradientPaint при заполнении пространства за пределами радиуса круга, задав для CycleMethod значение REFLECTION или REPEAT. Пропорции цветов градиента одинаковы для любой прямой, проведённой от фокусной точки. На следующем рисунке показано, что расстояние AB равно расстоянию BC, а расстояние AD равно расстоянию DE.

image showing the
distance AB=BC, and AD=DE

Если градиент и преобразования отрисовки графики равномерно масштабированы, а пользователь задаёт фокусную точку, совпадающую с центром круга, пропорции цветов градиента одинаковы для любой прямой, проведённой из центра. На следующем рисунке показаны расстояния AB, BC, AD и DE. Все они равны.

image showing the
distance of AB, BC, AD, and DE are all equal

Обратите внимание, что из-за дискретизации с точностью до пикселя могут возникать небольшие отклонения в расстояниях. Если метод циклического повторения не указан, по умолчанию будет выбран NO_CYCLE, то есть оставшаяся область будет заполнена цветом последнего ключевого кадра.

Параметр colorSpace позволяет пользователю указать цветовое пространство для интерполяции: sRGB по умолчанию или линейный RGB.

В следующем примере кода показано типичное использование RadialGradientPaint, в котором центральная и фокусная точки совпадают:

    Point2D center = new Point2D.Float(50, 50);
    float radius = 25;
    float[] dist = {0.0f, 0.2f, 1.0f};
    Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
    RadialGradientPaint p =
        new RadialGradientPaint(center, radius, dist, colors);

На этом изображении показан приведённый выше пример кода с фокусной точкой по умолчанию (в центре) для каждого из трёх методов циклического повторения:

image showing the
output of the sameple code

Также можно указать фокусную точку, не совпадающую с центром, как в следующем примере кода:

    Point2D center = new Point2D.Float(50, 50);
    float radius = 25;
    Point2D focus = new Point2D.Float(40, 40);
    float[] dist = {0.0f, 0.2f, 1.0f};
    Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
    RadialGradientPaint p =
        new RadialGradientPaint(center, radius, focus,
                                dist, colors,
                                CycleMethod.NO_CYCLE);

На этом изображении показан предыдущий пример кода с фокусной точкой, не совпадающей с центром, для каждого из трёх методов циклического повторения:

image showing the
output of the sample code

С версии:
1.6
См. также:
  • Paint
  • Graphics2D.setPaint(Paint)

Краткое описание вложенных классов

Вложенные классы и интерфейсы, объявленные в классе MultipleGradientPaint

MultipleGradientPaint.ColorSpaceType, MultipleGradientPaint.CycleMethod
Модификатор и тип Класс Описание
static enum  MultipleGradientPaint.ColorSpaceType
Цветовое пространство, используемое для интерполяции градиента.
static enum  MultipleGradientPaint.CycleMethod
Метод, используемый при отрисовке за пределами границ градиента.

Краткое описание полей

Поля, объявленные в интерфейсе Transparency

BITMASK, OPAQUE, TRANSLUCENT
Модификатор и тип Поле Описание
static final int BITMASK
Представляет данные изображения, для которых гарантируется, что они либо полностью непрозрачны (значение альфа-канала равно 1.0), либо полностью прозрачны (значение альфа-канала равно 0.0).
static final int OPAQUE
Представляет данные изображения, для которых гарантируется полная непрозрачность, то есть значение альфа-канала всех пикселей равно 1.0.
static final int TRANSLUCENT
Представляет данные изображения, содержащие или потенциально содержащие произвольные значения альфа-канала в диапазоне от 0.0 до 1.0 включительно.

Краткое описание конструкторов

Конструктор Описание
RadialGradientPaint(float cx, float cy, float radius, float[] fractions, Color[] colors)
Создаёт RadialGradientPaint с методом повторения NO_CYCLE и цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки.
RadialGradientPaint(float cx, float cy, float radius, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки.
RadialGradientPaint(float cx, float cy, float radius, float fx, float fy, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию.
RadialGradientPaint(Point2D center, float radius, float[] fractions, Color[] colors)
Создаёт RadialGradientPaint с методом повторения NO_CYCLE и цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки.
RadialGradientPaint(Point2D center, float radius, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки.
RadialGradientPaint(Point2D center, float radius, Point2D focus, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию.
RadialGradientPaint(Point2D center, float radius, Point2D focus, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod, MultipleGradientPaint.ColorSpaceType colorSpace, AffineTransform gradientTransform)
Создаёт RadialGradientPaint.
RadialGradientPaint(Rectangle2D gradientBounds, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию.

Краткое описание методов

Модификатор и тип Метод Описание
PaintContext createContext(ColorModel cm, Rectangle deviceBounds, Rectangle2D userBounds, AffineTransform transform, RenderingHints hints)
Создаёт и возвращает PaintContext, используемый для создания кругового радиального цветового градиента.
Point2D getCenterPoint()
Возвращает копию центральной точки радиального градиента.
Point2D getFocusPoint()
Возвращает копию фокусной точки радиального градиента.
float getRadius()
Возвращает радиус круга, задающего радиальный градиент.

Методы, объявленные в классе MultipleGradientPaint

getColors, getColorSpace, getCycleMethod, getFractions, getTransform, getTransparency
Модификатор и тип Метод Описание
final Color[] getColors()
Возвращает копию массива цветов, используемых этим градиентом.
final MultipleGradientPaint.ColorSpaceType getColorSpace()
Возвращает перечислимый тип, задающий цветовое пространство для интерполяции.
final MultipleGradientPaint.CycleMethod getCycleMethod()
Возвращает перечислимый тип, задающий поведение циклического повторения.
final float[] getFractions()
Возвращает копию массива значений типа float, используемых этим градиентом для вычисления распределения цветов.
final AffineTransform getTransform()
Возвращает копию преобразования, применённого к градиенту.
final int getTransparency()
Возвращает режим прозрачности этого объекта Paint.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени.

Подробное описание конструкторов

RadialGradientPaint

public RadialGradientPaint(float cx, float cy, float radius, float[] fractions, Color[] colors)
Создает RadialGradientPaint с методом повторения NO_CYCLE по умолчанию и цветовым пространством SRGB, используя центр в качестве фокусной точки.
Параметры:
cx — координата X центра окружности, задающей градиент, в пользовательском пространстве. Последний цвет градиента отображается на окружность этой окружности.
cy — координата Y центра окружности, задающей градиент, в пользовательском пространстве. Последний цвет градиента отображается на окружность этой окружности.
radius — радиус окружности, определяющей границы цветового градиента
fractions — числа от 0.0 до 1.0, задающие распределение цветов вдоль градиента
colors — массив цветов, используемых в градиенте. Первый цвет используется в фокусной точке, последний — по окружности.
Исключения:
NullPointerException — если массив fractions равен null или массив colors равен null
IllegalArgumentException — если radius не является положительным, или fractions.length != colors.length, или размер colors меньше 2, или значение fractions меньше 0.0 или больше 1.0, или fractions не заданы в строго возрастающем порядке

RadialGradientPaint

public RadialGradientPaint(Point2D center, float radius, float[] fractions, Color[] colors)
Создает RadialGradientPaint с методом повторения NO_CYCLE по умолчанию и цветовым пространством SRGB, используя центр в качестве фокусной точки.
Параметры:
center — центр окружности, задающей градиент, в пользовательском пространстве
radius — радиус окружности, определяющей границы цветового градиента
fractions — числа от 0.0 до 1.0, задающие распределение цветов вдоль градиента
colors — массив цветов, используемых в градиенте. Первый цвет используется в фокусной точке, последний — по окружности.
Исключения:
NullPointerException — если точка center равна null, массив fractions равен null или массив colors равен null
IllegalArgumentException — если radius не является положительным, или fractions.length != colors.length, или размер colors меньше 2, или значение fractions меньше 0.0 или больше 1.0, или fractions не заданы в строго возрастающем порядке

RadialGradientPaint

public RadialGradientPaint(float cx, float cy, float radius, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создает RadialGradientPaint с цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки.
Параметры:
cx — координата X центра окружности, задающей градиент, в пользовательском пространстве. Последний цвет градиента отображается на окружность этой окружности.
cy — координата Y центра окружности, задающей градиент, в пользовательском пространстве. Последний цвет градиента отображается на окружность этой окружности.
radius — радиус окружности, определяющей границы цветового градиента
fractions — числа от 0.0 до 1.0, задающие распределение цветов вдоль градиента
colors — массив цветов, используемых в градиенте. Первый цвет используется в фокусной точке, последний — по окружности.
cycleMethod — NO_CYCLE, REFLECT или REPEAT
Исключения:
NullPointerException — если массив fractions равен null, массив colors равен null или cycleMethod равен null
IllegalArgumentException — если radius не является положительным, или fractions.length != colors.length, или размер colors меньше 2, или значение fractions меньше 0.0 или больше 1.0, или fractions не заданы в строго возрастающем порядке

RadialGradientPaint

public RadialGradientPaint(Point2D center, float radius, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создает RadialGradientPaint с цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки.
Параметры:
center — центр окружности, задающей градиент, в пользовательском пространстве
radius — радиус окружности, определяющей границы цветового градиента
fractions — числа от 0.0 до 1.0, задающие распределение цветов вдоль градиента
colors — массив цветов, используемых в градиенте. Первый цвет используется в фокусной точке, последний — по окружности.
cycleMethod — NO_CYCLE, REFLECT или REPEAT
Исключения:
NullPointerException — если точка center равна null, массив fractions равен null, массив colors равен null или cycleMethod равен null
IllegalArgumentException — если radius не является положительным, или fractions.length != colors.length, или размер colors меньше 2, или значение fractions меньше 0.0 или больше 1.0, или fractions не заданы в строго возрастающем порядке

RadialGradientPaint

public RadialGradientPaint(float cx, float cy, float radius, float fx, float fy, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создает RadialGradientPaint с цветовым пространством SRGB по умолчанию.
Параметры:
cx — координата X центра окружности, задающей градиент, в пользовательском пространстве. Последний цвет градиента отображается на окружность этой окружности.
cy — координата Y центра окружности, задающей градиент, в пользовательском пространстве. Последний цвет градиента отображается на окружность этой окружности.
radius — радиус окружности, определяющей границы цветового градиента
fx — координата X точки в пользовательском пространстве, на которую отображается первый цвет
fy — координата Y точки в пользовательском пространстве, на которую отображается первый цвет
fractions — числа от 0.0 до 1.0, задающие распределение цветов вдоль градиента
colors — массив цветов, используемых в градиенте. Первый цвет используется в фокусной точке, последний — по окружности.
cycleMethod — NO_CYCLE, REFLECT или REPEAT
Исключения:
NullPointerException — если массив fractions равен null, массив colors равен null или cycleMethod равен null
IllegalArgumentException — если radius не является положительным, или fractions.length != colors.length, или размер colors меньше 2, или значение fractions меньше 0.0 или больше 1.0, или fractions не заданы в строго возрастающем порядке

RadialGradientPaint

public RadialGradientPaint(Point2D center, float radius, Point2D focus, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создает RadialGradientPaint с цветовым пространством SRGB по умолчанию.
Параметры:
center — центр окружности, задающей градиент, в пользовательском пространстве. Последний цвет градиента отображается на окружность этой окружности.
radius — радиус окружности, определяющей границы цветового градиента
focus — точка в пользовательском пространстве, на которую отображается первый цвет
fractions — числа от 0.0 до 1.0, задающие распределение цветов вдоль градиента
colors — массив цветов, используемых в градиенте. Первый цвет используется в фокусной точке, последний — по окружности.
cycleMethod — NO_CYCLE, REFLECT или REPEAT
Исключения:
NullPointerException — если одна из точек равна null, массив fractions равен null, массив colors равен null или cycleMethod равен null
IllegalArgumentException — если radius не является положительным, или fractions.length != colors.length, или размер colors меньше 2, или значение fractions меньше 0.0 или больше 1.0, или fractions не заданы в строго возрастающем порядке

RadialGradientPaint

@ConstructorProperties({"centerPoint","radius","focusPoint","fractions","colors","cycleMethod","colorSpace","transform"}) public RadialGradientPaint(Point2D center, float radius, Point2D focus, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod, MultipleGradientPaint.ColorSpaceType colorSpace, AffineTransform gradientTransform)
Создает RadialGradientPaint.
Параметры:
center — центр окружности, задающей градиент, в пользовательском пространстве. Последний цвет градиента отображается на окружность этой окружности.
radius — радиус окружности, определяющей границы цветового градиента
focus — точка в пользовательском пространстве, на которую отображается первый цвет
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 — если radius не является положительным, или fractions.length != colors.length, или размер colors меньше 2, или значение fractions меньше 0.0 или больше 1.0, или fractions не заданы в строго возрастающем порядке

RadialGradientPaint

public RadialGradientPaint(Rectangle2D gradientBounds, float[] fractions, Color[] colors, MultipleGradientPaint.CycleMethod cycleMethod)
Создает RadialGradientPaint с цветовым пространством SRGB по умолчанию. Окружность градиента RadialGradientPaint определяется заданной ограничивающей рамкой.

Этот конструктор позволяет удобнее записать следующий эквивалентный код:

    double gw = gradientBounds.getWidth();
    double gh = gradientBounds.getHeight();
    double cx = gradientBounds.getCenterX();
    double cy = gradientBounds.getCenterY();
    Point2D center = new Point2D.Double(cx, cy);

    AffineTransform gradientTransform = new AffineTransform();
    gradientTransform.translate(cx, cy);
    gradientTransform.scale(gw / 2, gh / 2);
    gradientTransform.translate(-cx, -cy);

    RadialGradientPaint gp =
        new RadialGradientPaint(center, 1.0f, center,
                                fractions, colors,
                                cycleMethod,
                                ColorSpaceType.SRGB,
                                gradientTransform);
Параметры:
gradientBounds — ограничивающая рамка в пользовательском пространстве для окружности, задающей внешний контур градиента
fractions — числа от 0.0 до 1.0, задающие распределение цветов вдоль градиента
colors — массив цветов, используемых в градиенте. Первый цвет используется в фокусной точке, последний — по окружности.
cycleMethod — NO_CYCLE, REFLECT или REPEAT
Исключения:
NullPointerException — если gradientBounds равен null, массив fractions равен null, массив colors равен null или cycleMethod равен null
IllegalArgumentException — если gradientBounds пуст, или 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, используемый для создания кругового радиального цветового градиента. Информацию об обработке параметров со значением null см. в описании метода createContext.
Параметры:
cm — предпочтительная ColorModel, представляющая наиболее удобный для вызывающего кода формат получения пиксельных данных, или null, если предпочтений нет.
deviceBounds — ограничивающая рамка графического примитива в пространстве устройства.
userBounds — ограничивающая рамка графического примитива в пользовательском пространстве.
transform — AffineTransform из пользовательского пространства в пространство устройства.
hints — набор подсказок, которые объект контекста может использовать для выбора способа отрисовки.
Возвращает:
PaintContext для создания цветовых узоров.
См. также:
  • Paint
  • PaintContext
  • ColorModel
  • Rectangle
  • Rectangle2D
  • AffineTransform
  • RenderingHints

getCenterPoint

public Point2D getCenterPoint()
Возвращает копию центральной точки радиального градиента.
Возвращает:
объект Point2D, являющийся копией центральной точки

getFocusPoint

public Point2D getFocusPoint()
Возвращает копию фокусной точки радиального градиента. Обратите внимание: если фокусная точка, заданная при создании радиального градиента, находится за пределами радиуса окружности, этот метод все равно вернет исходную фокусную точку, хотя при отрисовке цветовые кольца могут быть центрированы относительно другой точки, находящейся внутри радиуса.
Возвращает:
объект Point2D, являющийся копией фокусной точки

getRadius

public float getRadius()
Возвращает радиус окружности, задающей радиальный градиент.
Возвращает:
радиус окружности, задающей радиальный градиент

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры рабочего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API