Класс RadialGradientPaint
- java.lang.Object
-
- java.awt.MultipleGradientPaint
-
- java.awt.RadialGradientPaint
- Все реализуемые интерфейсы:
-
Paint,Transparency
public final class RadialGradientPaint extends MultipleGradientPaint
Класс RadialGradientPaint предоставляет способ заполнения фигуры радиальным цветовым градиентом по кругу. Пользователь может указать 2 или более цвета градиента, и эта покраска обеспечит интерполяцию между каждым цветом.
Пользователь должен указать окружность, контролирующую градиент, которая описывается центральной точкой и радиусом. Пользователь также может указать отдельную точку фокуса внутри этой окружности, которая контролирует расположение первого цвета градиента. По умолчанию фокус установлен в центре окружности.
Эта покраска сопоставит первый цвет градиента с точкой фокуса, а последний цвет — с окружностью круга, плавно интерполируя любые промежуточные цвета, указанные пользователем. Любая линия, проведенная от точки фокуса к окружности, таким образом, будет охватывать все цвета градиента.
Указание точки фокуса вне радиуса окружности приведет к тому, что кольца градиента будут центрированы в точке, расположенной непосредственно внутри края круга в направлении точки фокуса. Рендеринг будет внутренне использовать это измененное расположение, как если бы это была указанная точка фокуса.
Пользователь должен предоставить массив чисел с плавающей точкой, определяющий распределение цветов по градиенту. Эти значения должны лежать в диапазоне от 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
- См. также:
-
Paint,Graphics2D.setPaint(java.awt.Paint)
Вложенные классы
Вложенные классы/интерфейсы, объявленные в классе java.awt.MultipleGradientPaint
MultipleGradientPaint.ColorSpaceType, MultipleGradientPaint.CycleMethod Поля
Поля, объявленные в интерфейсе java.awt.Transparency
BITMASK, OPAQUE, TRANSLUCENT Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RadialGradientPaint(float cx,
float cy,
float radius,
float[] fractions,
Color[] colors) | Создает |
RadialGradientPaint(float cx,
float cy,
float radius,
float[] fractions,
Color[] colors,
MultipleGradientPaint.CycleMethod cycleMethod) | Создает |
RadialGradientPaint(float cx,
float cy,
float radius,
float fx,
float fy,
float[] fractions,
Color[] colors,
MultipleGradientPaint.CycleMethod cycleMethod) | Создает |
RadialGradientPaint(Point2D center,
float radius,
float[] fractions,
Color[] colors) | Создает |
RadialGradientPaint(Point2D center,
float radius,
float[] fractions,
Color[] colors,
MultipleGradientPaint.CycleMethod cycleMethod) | Создает |
RadialGradientPaint(Point2D center,
float radius,
Point2D focus,
float[] fractions,
Color[] colors,
MultipleGradientPaint.CycleMethod cycleMethod) | Создает |
RadialGradientPaint(Point2D center,
float radius,
Point2D focus,
float[] fractions,
Color[] colors,
MultipleGradientPaint.CycleMethod cycleMethod,
MultipleGradientPaint.ColorSpaceType colorSpace,
AffineTransform gradientTransform) | Создает |
RadialGradientPaint(Rectangle2D gradientBounds,
float[] fractions,
Color[] colors,
MultipleGradientPaint.CycleMethod cycleMethod) | Создает |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
PaintContext | createContext(ColorModel cm,
Rectangle deviceBounds,
Rectangle2D userBounds,
AffineTransform transform,
RenderingHints hints) | Создает и возвращает |
Point2D | getCenterPoint() | Возвращает копию центральной точки радиального градиента. |
Point2D | getFocusPoint() | Возвращает копию точки фокуса радиального градиента. |
float | getRadius() | Возвращает радиус окружности, определяющей радиальный градиент. |
Методы, объявленные в классе java.awt.MultipleGradientPaint
getColors, getColorSpace, getCycleMethod, getFractions, getTransform, getTransparency Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
RadialGradientPaint
public RadialGradientPaint(float cx,
float cy,
float radius,
float[] fractions,
Color[] colors) Создаёт RadialGradientPaint с методом повторения по умолчанию и цветовым пространством по умолчанию, используя центр в качестве точки фокусировки.
- Параметры:
-
cx- координата X в пространстве пользователя центра круга, определяющего градиент. Последний цвет градиента отображается на границе этого круга. -
cy- координата Y в пространстве пользователя центра круга, определяющего градиент. Последний цвет градиента отображается на границе этого круга. -
radius- радиус круга, определяющего границы цветового градиента -
fractions- числа от 0,0 до 1,0, определяющие распределение цветов по градиенту -
colors- массив цветов, используемых в градиенте. Первый цвет используется в точке фокусировки, последний - на границе круга. - Исключения:
-
NullPointerException- если массивfractionsnull или массивcolorsnull -
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 с методом повторения по умолчанию и цветовым пространством по умолчанию, используя центр в качестве точки фокусировки.
- Параметры:
-
center- точка центра, в пространстве пользователя, круга, определяющего градиент -
radius- радиус круга, определяющего границы цветового градиента -
fractions- числа от 0,0 до 1,0, определяющие распределение цветов по градиенту -
colors- массив цветов, используемых в градиенте. Первый цвет используется в точке фокусировки, последний - на границе круга. - Исключения:
-
NullPointerException- если точкаcenternull, или массивfractionsnull, или массивcolorsnull -
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 с цветовым пространством по умолчанию, используя центр в качестве точки фокусировки.
- Параметры:
-
cx- координата X в пространстве пользователя центра круга, определяющего градиент. Последний цвет градиента отображается на границе этого круга. -
cy- координата Y в пространстве пользователя центра круга, определяющего градиент. Последний цвет градиента отображается на границе этого круга. -
radius- радиус круга, определяющего границы цветового градиента -
fractions- числа от 0,0 до 1,0, определяющие распределение цветов по градиенту -
colors- массив цветов, используемых в градиенте. Первый цвет используется в точке фокусировки, последний - на границе круга. -
cycleMethod- либоNO_CYCLE, либоREFLECT, либоREPEAT - Исключения:
-
NullPointerException- если массивfractionsnull, или массивcolorsnull, илиcycleMethodnull -
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 с цветовым пространством по умолчанию, используя центр в качестве точки фокусировки.
- Параметры:
-
center- точка центра, в пространстве пользователя, круга, определяющего градиент -
radius- радиус круга, определяющего границы цветового градиента -
fractions- числа от 0,0 до 1,0, определяющие распределение цветов по градиенту -
colors- массив цветов, используемых в градиенте. Первый цвет используется в точке фокусировки, последний - на границе круга. -
cycleMethod- либоNO_CYCLE, либоREFLECT, либоREPEAT - Исключения:
-
NullPointerException- если точкаcenternull, или массивfractionsnull, или массивcolorsnull, илиcycleMethodnull -
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 с цветовым пространством по умолчанию.
- Параметры:
-
cx- координата X в пространстве пользователя центра круга, определяющего градиент. Последний цвет градиента отображается на границе этого круга. -
cy- координата Y в пространстве пользователя центра круга, определяющего градиент. Последний цвет градиента отображается на границе этого круга. -
radius- радиус круга, определяющего границы цветового градиента -
fx- координата X точки в пространстве пользователя, к которой отображается первый цвет -
fy- координата Y точки в пространстве пользователя, к которой отображается первый цвет -
fractions- числа от 0,0 до 1,0, определяющие распределение цветов по градиенту -
colors- массив цветов, используемых в градиенте. Первый цвет используется в точке фокусировки, последний - на границе круга. -
cycleMethod- либоNO_CYCLE, либоREFLECT, либоREPEAT - Исключения:
-
NullPointerException- если массивfractionsnull, или массивcolorsnull, илиcycleMethodnull -
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 с цветовым пространством по умолчанию.
- Параметры:
-
center- точка центра, в пространстве пользователя, круга, определяющего градиент. Последний цвет градиента отображается на границе этого круга. -
radius- радиус круга, определяющего границы цветового градиента -
focus- точка в пространстве пользователя, к которой отображается первый цвет -
fractions- числа от 0,0 до 1,0, определяющие распределение цветов по градиенту -
colors- массив цветов, используемых в градиенте. Первый цвет используется в точке фокусировки, последний - на границе круга. -
cycleMethod- либоNO_CYCLE, либоREFLECT, либоREPEAT - Исключения:
-
NullPointerException- если одна из точек null, или массивfractionsnull, или массивcolorsnull, илиcycleMethodnull -
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 с цветовым пространством по умолчанию. Круг градиента 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, используемый для создания кругового радиального градиента. См. описание метода createContext для обработки параметров со значением null.
- Параметры:
-
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()
Возвращает радиус круга, определяющего радиальный градиент.
- Возвращает:
- радиус круга, определяющего радиальный градиент
© 1993, 2020, 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/RadialGradientPaint.html