Класс 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.
Если градиент и преобразования отрисовки графики равномерно масштабированы, а пользователь задаёт фокусную точку, совпадающую с центром круга, пропорции цветов градиента одинаковы для любой прямой, проведённой из центра. На следующем рисунке показаны расстояния AB, BC, AD и DE. Все они равны.
Обратите внимание, что из-за дискретизации с точностью до пикселя могут возникать небольшие отклонения в расстояниях. Если метод циклического повторения не указан, по умолчанию будет выбран 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);
На этом изображении показан приведённый выше пример кода с фокусной точкой по умолчанию (в центре) для каждого из трёх методов циклического повторения:
Также можно указать фокусную точку, не совпадающую с центром, как в следующем примере кода:
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);
На этом изображении показан предыдущий пример кода с фокусной точкой, не совпадающей с центром, для каждого из трёх методов циклического повторения:
- С версии:
- 1.6
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в классе 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 |
Создаёт RadialGradientPaint с методом повторения NO_CYCLE и цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки. |
RadialGradientPaint |
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки. |
RadialGradientPaint |
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию. |
RadialGradientPaint |
Создаёт RadialGradientPaint с методом повторения NO_CYCLE и цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки. |
RadialGradientPaint |
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию, используя центр в качестве фокусной точки. |
RadialGradientPaint |
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию. |
RadialGradientPaint |
Создаёт RadialGradientPaint. |
RadialGradientPaint |
Создаёт RadialGradientPaint с цветовым пространством SRGB по умолчанию. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
PaintContext |
createContext |
Создаёт и возвращает 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 |
Указывает, равен ли этот объект другому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова 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для создания цветовых узоров.- См. также:
getCenterPoint
public Point2D getCenterPoint()
- Возвращает:
- объект
Point2D, являющийся копией центральной точки
getFocusPoint
public Point2D getFocusPoint()
- Возвращает:
- объект
Point2D, являющийся копией фокусной точки
getRadius
public float getRadius()
- Возвращает:
- радиус окружности, задающей радиальный градиент
© 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.