QEasingCurve Class
QEasingCurve クラスは、アニメーションを制御するためのイージングカーブを提供します。詳細...
Header: | #include <QEasingCurve> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバ一覧
- QEasingCurveはAnimation Frameworkの一部です。
パブリックタイプ
EasingFunction | |
enum | Type { Linear, InQuad, OutQuad, InOutQuad, OutInQuad, …, Custom } |
パブリック関数
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) |
QList<QPointF> | toCubicSpline() const |
QEasingCurve::Type | type() const |
qreal | valueForProgress(qreal progress) const |
QEasingCurve & | operator=(QEasingCurve &&other) |
QEasingCurve & | operator=(const QEasingCurve &other) |
関連する非メンバー
bool | operator!=(const QEasingCurve &lhs, const QEasingCurve &rhs) |
QDataStream & | operator<<(QDataStream &stream, const QEasingCurve &easing) |
bool | operator==(const QEasingCurve &lhs, const QEasingCurve &rhs) |
QDataStream & | operator>>(QDataStream &stream, QEasingCurve &easing) |
詳細説明
イージングカーブは、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タイプのサンプルが含まれており、カーブの設定を変更することができます。
メンバ・タイプのドキュメント
QEasingCurve::EasingFunction
これは、以下のシグネチャを持つ関数へのポインタの typedef です:
enum QEasingCurve::Type
イージングカーブのタイプ。
定数 | 値 |
---|---|
QEasingCurve::Linear | 0 |
線形(t)関数の緩和曲線: 速度は一定.
定数 | 値 |
---|---|
QEasingCurve::InQuad | 1 |
2次(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 |
4次(t^4)関数のイージングカーブ:途中まで減速、その後加速。
定数 | 値 |
---|---|
QEasingCurve::InQuint | 13 |
5次関数(t^5)のイージングカーブ:速度ゼロからの加速。
一定 | 値 |
---|---|
QEasingCurve::OutQuint | 14 |
5進法(t^5)のイージングカーブ:速度ゼロからの減速。
一定 | 値 |
---|---|
QEasingCurve::InOutQuint | 15 |
5進数(t^5)関数のイージングカーブ:途中まで加速し、その後減速。
一定 | 値 |
---|---|
QEasingCurve::OutInQuint | 16 |
5次関数(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 |
バック(オーバーシュートする3次関数:(s+1)*t^3 - s*t^2)のイージングカーブ:速度ゼロからの加速。
一定 | 値 |
---|---|
QEasingCurve::OutBack | 34 |
バックのイージングカーブ(オーバーシュート3次関数:(s+1)*t^3 - s*t^2)イージングアウト:速度ゼロから減速。
一定 | 値 |
---|---|
QEasingCurve::InOutBack | 35 |
バックのイージングカーブ(オーバーシュート3次関数:(s+1)*t^3 - s*t^2)イージングイン/アウト:途中まで加速、その後減速。
一定 | 値 |
---|---|
QEasingCurve::OutInBack | 36 |
バックのイージングカーブ(オーバーシュート3次関数:(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 のコピーを構築します。
[noexcept]
QEasingCurve::QEasingCurve(QEasingCurve &&other)
Move - QEasingCurve インスタンスを構築し、other が指していたのと同じオブジェクトを指すようにします。
[noexcept]
QEasingCurve::~QEasingCurve()
デストラクタ。
void QEasingCurve::addCubicBezierSegment(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
カスタム イージング カーブを定義するために、3 次ベジェ スプラインのセグメントを追加します。これは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)で終了しなければならない。tensiont は、接線ベクトルの長さを変更します。continuityc は、接線間の変化の鋭さを変更します。biasb は接線ベクトルの方向を変更します。nextPoint はサンプル位置です。3つのパラメータはすべて-1から1の間で有効で、制御点の接線を定義します。3つのパラメータがすべて0の場合、結果のスプラインは Catmull-Romスプラインになります。外側の接線は定義されないため、始点と終点は常に -1 と 1 のバイアスを持ちます。
qreal QEasingCurve::amplitude() const
amplitude関数は振幅を返します。これはすべてのカーブタイプに適用できるわけではありません。バウンス曲線と弾性曲線(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 は 0 にはできません。
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()も参照 。
[noexcept]
void QEasingCurve::swap(QEasingCurve &other)
曲線other をこの曲線と入れ替えます。この操作は非常に高速で、失敗することはありません。
QList<QPointF> QEasingCurve::toCubicSpline() const
カスタムイージング曲線を定義する cubicBezierSpline を返します。イージング曲線がカスタムベジエイージング曲線を持たない場合、リストは空になります。
QEasingCurve::Type QEasingCurve::type() const
イージング曲線の型を返します。
setType()も参照してください 。
qreal QEasingCurve::valueForProgress(qreal progress) const
progress におけるイージングカーブの有効な進捗を返します。progress が 0 から 1 の間でなければならないのに対して、 返される実効的な進捗はその範囲外であってもかまいません。例えば、QEasingCurve::InBack は、関数の最初で負の値を返します。
[noexcept]
QEasingCurve &QEasingCurve::operator=(QEasingCurve &&other)
Move-other をこのQEasingCurve インスタンスに割り当てます。
QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)
コピーother 。
関連する非メンバー
[noexcept]
bool operator!=(const QEasingCurve &lhs, const QEasingCurve &rhs)
イージング曲線lhs をrhs と比較し、等しくない場合はtrue
を返し、等しくない場合はfalse
を返します。また、曲線の特性も比較します。
operator==()も参照してください 。
QDataStream &operator<<(QDataStream &stream, const QEasingCurve &easing)
与えられたeasing 曲線を与えられたstream に書き込み、ストリームへの参照を返します。
Qt データ型のシリアライズも参照して ください。
[noexcept]
bool operator==(const QEasingCurve &lhs, const QEasingCurve &rhs)
イージング曲線lhs とrhs を比較し、等しい場合はtrue
を返し、そうでない場合はfalse
を返します。また、曲線のプロパティも比較します。
QDataStream &operator>>(QDataStream &stream, QEasingCurve &easing)
与えられたstream から与えられたeasing 曲線にイージング曲線を読み込み、ストリームへの参照を返します。
Qt データ型のシリアライズも参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。