Qt 在QML中自定義貝塞爾動畫曲線

2021-08-02 04:08:02 字數 1181 閱讀 1107

qt在propertyanimation中,已經準備了很多常用的動畫曲線,比如說linear、quad、elastic等。這些基本已經可以覆蓋我們大部分需求了,但是也不是所有的。

比如說,google非常有名的設計風格material,就有自己的動畫曲線,如下圖:

這個呢,在qml中是沒有的。要實現它,最簡單的方法就是自定義乙個貝塞爾曲線。

別被這個名字嚇到了,實際上我們要用到的就是4個數字,沒有什麼數學公式,而且現在都有很多的繪製工具可以直接匯出這4個值。

例如,material中已經說了,這4個值為:0.4, 0.0, 0.2, 1

分別對應:cx1, cy1, cx2, cy2

我們只要直接設定到propertyanimation中就可以使用了。

使用方式如下:

id: animationfory

target: testrectangle

property: "y"

from: 482

to: 82

duration: 3000

easing.type: easing.bezier

easing.beziercurve: [ 0.40, 0.05, 0.22, 0.97, 1, 1 ]

running: true

loops: animation.infinite}

主要就是以下這兩行

easing.type: easing.bezier

easing.beziercurve: [ 0.40, 0.05, 0.22, 0.97, 1, 1 ]

告訴propertyanimation,要用貝塞爾曲線的動畫,然後引數分別是0.40, 0.05, 0.22, 0.97, 1, 1

注意,最後的兩個1是固定的且不可修改。

引數上我裡做了一些細微的修改,為了更加的擬合上的效果。

最後我做出來是這樣的效果:

這個藍色區線的,是我從material官方上截圖下來的

x軸方向是線性的

y軸方向,用的是貝塞爾曲線

自定義貝塞爾曲線

有時候現有的控制項無法滿足我們的需求,打不到我們想要的效果,這時候就需要我們自己來寫乙個自定義view,來滿足自己的需求。而貝塞爾曲線,就是其中的一種方式,比如說我們需要畫乙個弧形的線條或者是圖形,這時候就可以使用貝塞爾曲線來進行,最簡單的就是畫乙個圓形。下面就是介紹一下貝塞爾曲線 貝塞爾曲線,就是...

QT QML 在qml中自定義訊號

服從真理,就能征服一切事物。塞涅卡 例項 自定義檔案 moveyou.qml import qtquick 2.5 import qtquick.controls 1.4 import qtquick.layouts 1.2 import qtquick.window 2.2 rectangle,注...

AS 中的自定義元件動畫

自定義元件動畫 某些元件 如 accordion combobox 和 tree 元件 提供動畫來演示元件狀態之間的過渡 例如,在 accordion 子項之間切換 擴充套件組合框下拉列表和擴充套件或摺疊樹形資料夾時 另外,元件提供與專案 如列表中的行 的選擇和取消選擇有關的動畫。可以通過以下樣式來...