Класс 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 |
Статические public члены
| const QMetaObject | staticMetaObject |
Связанные нечлены
| 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. Доступ к амплитуде есть для кривых, которые ведут себя как пружины, такие как кривые elastic и bounce. Изменение амплитуды изменяет высоту кривой. Доступ к периоду доступен только для кривых elastic, а установка более высокого периода замедляет скорость отскока. Только кривые, которые имеют поведение «бумеранг», такие как InBack, OutBack, InOutBack и OutInBack, имеют настройки перескока. Эти кривые будут интерполировать за пределы конечных точек и вернуться в конечную точку, действуя подобно бумерангу.
Пример кривых сглаживания содержит примеры типов QEasingCurve и позволяет вам изменить настройки кривой.
Документация по типам членов
typedef QEasingCurve::EasingFunction
Это typedef для указателя на функцию со следующим сигнатурой:
qreal myEasingFunction(qreal progress);
enum 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, 0.0) и должен заканчиваться в (1.0, 1.0), чтобы быть действительной кривой плавного изменения. c1 и c2 — контрольные точки, используемые для построения кривой. endPoint — конечная точка кривой.
void QEasingCurve::addTCBSegment(const QPointF &nextPoint, qreal t, qreal c, qreal b)
Добавляет сегмент TCB-сплайн-кривой Безье для определения пользовательской кривой плавного изменения. Применимо только если type() равен QEasingCurve::TCBSpline. Сплайн должен явно начинаться в (0.0, 0.0) и заканчиваться в (1.0, 1.0), чтобы быть действительной кривой плавного изменения. Напряжение t изменяет длину вектора касательной. Непрерывность c изменяет остроту изменения между касательными. Смещение b изменяет направление вектора касательной. nextPoint — позиция образца. Все три параметра имеют значение от -1 до 1 и определяют касательную контрольной точки. Если все три параметра равны 0, полученная сплайн-кривая — сплайн-кривая Катмулла-Рома. Начало и конец всегда имеют смещение -1 и 1, так как внешняя касательная не определена.
qreal QEasingCurve::amplitude() const
Возвращает амплитуду. Это не применимо ко всем типам кривых. Применимо только для кривых отскока и упругости (кривые типа 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, определяющую пользовательскую кривую сглаживания. Если кривая сглаживания не имеет пользовательской кривой сглаживания Bézier, список пуст.
Эта функция была добавлена в 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/qt-5.12/qeasingcurve.html