Класс QEasingCurve
Класс QEasingCurve предоставляет кривые сглаживания для управления анимацией. Подробнее...
| Заголовок: | #include <QEasingCurve> |
| qmake: | QT += core |
| С момента: | Qt 4.6 |
Типы public
| typedef | EasingFunction |
| Перечисление | Type { Linear, InQuad, OutQuad, InOutQuad, ..., Custom } |
Функции public
| QEasingCurve(QEasingCurve::Type type = Linear) | |
| QEasingCurve(const QEasingCurve &other) | |
| QEasingCurve(QEasingCurve &&other) | |
| ~QEasingCurve() | |
| void | addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint) |
| void | addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b) |
| qreal | amplitude() const |
| QEasingCurve::EasingFunction | customType() const |
| qreal | overshoot() const |
| qreal | period() const |
| void | setAmplitude(qreal amplitude) |
| void | setCustomType(QEasingCurve::EasingFunction func) |
| void | setOvershoot(qreal overshoot) |
| void | setPeriod(qreal period) |
| void | setType(QEasingCurve::Type type) |
| void | swap(QEasingCurve &other) |
| QVector<QPointF> | toCubicSpline() const |
| QEasingCurve::Type | type() const |
| qreal | valueForProgress(qreal progress) const |
| bool | operator!=(const QEasingCurve &other) const |
| QEasingCurve & | operator=(const QEasingCurve &other) |
| QEasingCurve & | operator=(QEasingCurve &&other) |
| bool | operator==(const QEasingCurve &other) const |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &stream, const QEasingCurve &easing) |
| QDataStream & | operator>>(QDataStream &stream, QEasingCurve &easing) |
Подробное описание
Класс QEasingCurve предоставляет кривые сглаживания для управления анимацией.
Кривые сглаживания описывают функцию, которая контролирует, как должна изменяться скорость интерполяции между 0 и 1. Кривые сглаживания позволяют переходам от одного значения к другому выглядеть более естественно, чем простая постоянная скорость. Класс QEasingCurve обычно используется совместно с классами QVariantAnimation и QPropertyAnimation, но может быть использован и самостоятельно. Обычно используется для ускорения интерполяции от нулевой скорости (сглаживание в начале) или замедления до нулевой скорости (сглаживание в конце). Сглаживание в начале и в конце также может быть комбинировано в одной кривой сглаживания.
Для расчета скорости интерполяции кривая сглаживания предоставляет функцию valueForProgress(), где аргумент progress задает прогресс интерполяции: 0 — начальное значение интерполяции, 1 — конечное значение интерполяции. Возвращаемое значение — эффективный прогресс интерполяции. Если возвращаемое значение совпадает со входным значением для всех входных значений, кривая сглаживания является линейной кривой. Это поведение по умолчанию.
Например,
QEasingCurve easing(QEasingCurve::InOutQuad);
for(qreal t = 0.0; t < 1.0; t+=0.1)
qWarning() << "Effective progress" << t << " is
<< easing.valueForProgress(t);
будет выводить эффективный прогресс интерполяции между 0 и 1.
При использовании QPropertyAnimation, связанная кривая сглаживания будет использоваться для управления прогрессом интерполяции между startValue и endValue:
QPropertyAnimation animation; animation.setStartValue(0); animation.setEndValue(1000); animation.setDuration(1000); animation.setEasingCurve(QEasingCurve::InOutQuad);
Возможность установить амплитуду, перехват или период зависит от типа QEasingCurve. Доступ к амплитуде имеется для кривых, которые ведут себя как пружины, такие как упругие и отскоковые кривые. Изменение амплитуды изменяет высоту кривой. Доступ к периоду имеется только для упругих кривых, и установка большего периода замедляет скорость отскока. Только у кривых, имеющих «мерцающее» поведение, такие как InBack, OutBack, InOutBack и OutInBack, есть настройки перехвата. Эти кривые будут интерполировать за пределами конечных точек и возвращаться к конечной точке, действуя подобно волчку.
Пример кривых сглаживания Easing Curves Example содержит примеры типов QEasingCurve и позволяет изменить параметры кривой.
Документация по типам членов
typedef QEasingCurve::EasingFunction
Это typedef для указателя на функцию со следующим сигнатурой:
qreal myEasingFunction(qreal progress);
перечисление QEasingCurve::Type
Тип кривой сглаживания.
| Постоянная | Значение |
|---|---|
QEasingCurve::Linear |
0 |
Кривая сглаживания для линейной (t) функции: скорость постоянна.
| Постоянная | Значение |
|---|---|
QEasingCurve::InQuad |
1 |
Кривая сглаживания для квадратичной (t^2) функции: ускорение с нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutQuad |
2 |
Кривая сглаживания для квадратичной (t^2) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutQuad |
3 |
Кривая сглаживания для квадратичной (t^2) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInQuad |
4 |
Кривая сглаживания для квадратичной (t^2) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InCubic |
5 |
Кривая смягчения для кубической (t^3) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutCubic |
6 |
Кривая смягчения для кубической (t^3) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutCubic |
7 |
Кривая смягчения для кубической (t^3) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInCubic |
8 |
Кривая смягчения для кубической (t^3) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InQuart |
9 |
Кривая смягчения для функции четвёртой степени (t^4): ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutQuart |
10 |
Кривая смягчения для функции четвёртой степени (t^4): замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutQuart |
11 |
Кривая смягчения для функции четвёртой степени (t^4): ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInQuart |
12 |
Кривая смягчения для функции четвёртой степени (t^4): замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InQuint |
13 |
Кривая смягчения для функции пятой степени (t^5) с ускорением: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutQuint |
14 |
Кривая смягчения для функции пятой степени (t^5): замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutQuint |
15 |
Кривая смягчения для функции пятой степени (t^5): ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInQuint |
16 |
Кривая смягчения для функции пятой степени (t^5): замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InSine |
17 |
Кривая смягчения для синусоидальной (sin(t)) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutSine |
18 |
Кривая смягчения для синусоидальной (sin(t)) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutSine |
19 |
Кривая смягчения для синусоидальной (sin(t)) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInSine |
20 |
Кривая смягчения для синусоидальной (sin(t)) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InExpo |
21 |
Кривая смягчения для экспоненциальной (2^t) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutExpo |
22 |
Кривая смягчения для экспоненциальной (2^t) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutExpo |
23 |
Кривая смягчения для экспоненциальной (2^t) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInExpo |
24 |
Кривая смягчения для экспоненциальной (2^t) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InCirc |
25 |
Кривая смягчения для круговой (sqrt(1-t^2)) функции: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutCirc |
26 |
Кривая смягчения для круговой (sqrt(1-t^2)) функции: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutCirc |
27 |
Кривая смягчения для круговой (sqrt(1-t^2)) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInCirc |
28 |
Кривая смягчения для круговой (sqrt(1-t^2)) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InElastic |
29 |
Кривая смягчения для упругой (экспоненциально затухающая синусоидальная) функции: ускорение от нулевой скорости. Пиковая амплитуда может быть установлена параметром amplitude, а период затухания – параметром period.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutElastic |
30 |
Кривая смягчения для упругой (экспоненциально затухающая синусоидальная) функции: замедление до нулевой скорости. Пиковая амплитуда может быть установлена параметром amplitude, а период затухания – параметром period.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutElastic |
31 |
Кривая смягчения для упругой (экспоненциально затухающая синусоидальная) функции: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInElastic |
32 |
Кривая смягчения для упругой (экспоненциально затухающая синусоидальная) функции: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InBack |
33 |
Кривая смягчения для обратной (перескочившей кубической функции: (s+1)*t^3 - s*t^2) с ускорением: ускорение от нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutBack |
34 |
Кривая смягчения для обратной (перескочившей кубической функции: (s+1)*t^3 - s*t^2) с замедлением: замедление до нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutBack |
35 |
Кривая плавного изменения для обратного (перескок кубической функции: (s+1)*t^3 - s*t^2) ввода/вывода: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInBack |
36 |
Кривая плавного изменения для обратного (перескок кубической функции: (s+1)*t^3 - s*t^2) вывода/ввода: замедление до середины, затем ускорение.
| Постоянная | Значение |
|---|---|
QEasingCurve::InBounce |
37 |
Кривая плавного изменения для отскока (экспоненциально убывающий параболический отскок) функции: ускорение с нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutBounce |
38 |
Кривая плавного изменения для отскока (экспоненциально убывающий параболический отскок) функции: замедление с нулевой скорости.
| Постоянная | Значение |
|---|---|
QEasingCurve::InOutBounce |
39 |
Кривая плавного изменения для отскока (экспоненциально убывающий параболический отскок) функции ввод/вывод: ускорение до середины, затем замедление.
| Постоянная | Значение |
|---|---|
QEasingCurve::OutInBounce |
40 |
Кривая плавного изменения для отскока (экспоненциально убывающий параболический отскок) функции вывод/ввод: замедление до середины, затем ускорение.
| Постоянная | Значение | Описание |
|---|---|---|
QEasingCurve::BezierSpline |
45 |
Позволяет определить пользовательскую кривую плавного изменения с помощью кубического сплайна Безье |
QEasingCurve::TCBSpline |
46 |
Позволяет определить пользовательскую кривую плавного изменения с помощью сплайна TCB |
QEasingCurve::Custom |
47 |
Возвращается, если пользователь указал тип пользовательской кривой с помощью setCustomType(). Обратите внимание, что вы не можете вызвать setType() с этим значением, но type() может вернуть его. |
См. также addCubicBezierSegment() и addTCBSegment().
Документация функций-членов
QEasingCurve::QEasingCurve(QEasingCurve::Type type = Linear)
Создает кривую плавного изменения заданного типа type.
QEasingCurve::QEasingCurve(const QEasingCurve &other)
Создает копию other.
QEasingCurve::QEasingCurve(QEasingCurve &&other)
Создает QEasingCurve экземпляр путем перемещения, делая его указателем на тот же объект, что и other.
Эта функция была введена в Qt 5.2.
QEasingCurve::~QEasingCurve()
Деструктор.
void QEasingCurve::addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
Добавляет сегмент кубического сплайна Безье для определения пользовательской кривой плавного изменения. Применимо только в случае, если type() равно QEasingCurve::BezierSpline. Обратите внимание, что сплайн неявно начинается с (0,0) и должен заканчиваться (1,1), чтобы быть действительной кривой плавного изменения. c1 и c2 — контрольные точки, используемые для построения кривой. endPoint — конечная точка кривой.
void QEasingCurve::addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b)
Добавляет сегмент сплайна TCB Безье для определения пользовательской кривой плавного изменения. Применимо только в случае, если type() равно QEasingCurve::TCBSpline. Сплайн должен явно начинаться с (0,0) и заканчиваться (1,1), чтобы быть действительной кривой плавного изменения. Напряжение t изменяет длину вектора касательной. Непрерывность c изменяет остроту изменения между касательными. Смещение b изменяет направление вектора касательной. nextPoint — положение образца. Все три параметра действительны в диапазоне от -1 до 1 и определяют касательную к контрольной точке. Если все три параметра равны 0, получающийся сплайн — сплайн Катмулла-Рома. Начало и конец всегда имеют смещение -1 и 1, так как внешняя касательная не определена.
qreal QEasingCurve::amplitude() const
Возвращает амплитуду. Это не применимо ко всем типам кривых. Применимо только для кривых отскока и эластичных кривых (кривых с type() QEasingCurve::InBounce, QEasingCurve::OutBounce, QEasingCurve::InOutBounce, QEasingCurve::OutInBounce, QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic или QEasingCurve::OutInElastic).
См. также setAmplitude().
QEasingCurve::EasingFunction QEasingCurve::customType() const
Возвращает указатель на функцию пользовательской кривой плавного изменения. Если type() не возвращает QEasingCurve::Custom, эта функция вернет 0.
См. также setCustomType().
qreal QEasingCurve::overshoot() const
Возвращает перескок. Это не применимо ко всем типам кривых. Применимо только если type() равно QEasingCurve::InBack, QEasingCurve::OutBack, QEasingCurve::InOutBack или QEasingCurve::OutInBack.
См. также setOvershoot().
qreal QEasingCurve::period() const
Возвращает период. Это не применимо ко всем типам кривых. Применимо только если type() равно QEasingCurve::InElastic, QEasingCurve::OutElastic, QEasingCurve::InOutElastic или QEasingCurve::OutInElastic.
См. также setPeriod().
void QEasingCurve::setAmplitude(qreal amplitude)
Устанавливает амплитуду равной amplitude.
Это установит амплитуду отскока или амплитуду эффекта эластичного «пружинного» воздействия. Чем больше число, тем выше амплитуда.
См. также amplitude().
void QEasingCurve::setCustomType(QEasingCurve::EasingFunction func)
Устанавливает пользовательскую кривую плавного изменения, определенную пользователем в функции func. Подпись функции: qreal myEasingFunction(qreal progress), где progress и возвращаемое значение рассматриваются как нормализованные значения между 0 и 1. (В некоторых случаях возвращаемое значение может выходить за этот диапазон) После вызова этой функции type() вернет QEasingCurve::Custom. func не может быть нулевым.
См. также customType() и valueForProgress().
void QEasingCurve::setOvershoot(qreal overshoot)
Устанавливает перескок равным overshoot.
0 не производит перескока, а значение по умолчанию 1,70158 производит перескок 10 процентов.
См. также overshoot().
void QEasingCurve::setPeriod(qreal period)
Устанавливает период равным period. Установка малого значения периода даст высокую частоту кривой. Большое значение периода даст малую частоту.
См. также period().
void QEasingCurve::setType(QEasingCurve::Type type)
Устанавливает тип кривой сглаживания на type.
См. также type().
void QEasingCurve::swap(QEasingCurve &other)
Обменивает кривую other с этой кривой. Эта операция очень быстрая и никогда не терпит неудачу.
Эта функция была добавлена в Qt 5.0.
QVector<QPointF> QEasingCurve::toCubicSpline() const
Возвращает cubicBezierSpline, определяющую пользовательскую кривую сглаживания. Если кривая сглаживания не имеет пользовательской кривой сглаживания безье, список пуст.
Эта функция была добавлена в Qt 5.0.
QEasingCurve::Type QEasingCurve::type() const
Возвращает тип кривой сглаживания.
См. также setType().
qreal QEasingCurve::valueForProgress(qreal progress) const
Возвращает эффективное значение прогресса для кривой сглаживания в точке progress. В то время как progress должен находиться в диапазоне от 0 до 1, возвращаемое эффективное значение прогресса может выходить за эти пределы. Например, QEasingCurve::InBack вернёт отрицательные значения в начале функции.
bool QEasingCurve::operator!=(const QEasingCurve &other) const
Сравнивает эту кривую сглаживания с other и возвращает true , если они не равны. Также сравниваются свойства кривой.
См. также operator==().
QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)
Копирует other.
QEasingCurve &QEasingCurve::operator=(QEasingCurve &&other)
Перемещает other в этот экземпляр QEasingCurve.
Эта функция была добавлена в Qt 5.2.
bool QEasingCurve::operator==(const QEasingCurve &other) const
Сравнивает эту кривую сглаживания с other и возвращает true , если они равны. Также сравниваются свойства кривой.
Связанные нечлен-функции
QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)
Записывает заданную кривую easing в заданный поток stream и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing)
Считывает кривую сглаживания из заданного потока stream в заданную кривую easing и возвращает ссылку на поток.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qeasingcurve.html