用QML和Qt C 實現翻頁效果的研究(1)

2021-05-24 03:11:21 字數 1241 閱讀 4238

先佔位,明天補上

本來說是星期天 jan,17號寫的,結果出切逛街了,回來已經累的半死,且已經晚上10點了,看今天有沒得時間寫 -- jan,18 注

一直以來都想自己用

qt做乙個翻頁的效果,不過卻總是找不到合適的心情來寫完一篇日誌。 趁著

nokia

最近在主打

qt quick

,也藉著放假的空擋,決定把這篇日誌寫完。

說到翻頁效果,我想大家並不陌生。而要說到做的好的,不得不說一下

ios中的實現。筆者沒有深入研究過

ios中的翻頁效果是怎樣具體實現,不過想來,也並不外乎以下幾點: 1.

simulation

:即所謂的**效果,通過模擬現實世界中的翻頁動作,採點並記錄下書頁翻動過程中的軌跡方程,而這些方程的表現通常為

2次或者

3次曲線。而

qt中也提供對這些方程的描述,比如說:利用

qpainter

的drawpath

方法,畫出翻頁過程中的頁尾曲線,通過裁減圖形(影象),達到**的效果。 2.

3d或2.5d

效果:蘋果很多的效果都用到了

3d的形式,而對於翻頁效果來說,可以考慮

3d,也可以用

2.5d的假3

維效果來以假亂真。而實現的思路可以歸結為兩方面,用動態的旋轉來模擬

3d的旋轉;用光照及陰影來製作頁尾的翻起及明暗的

3d效果。 3.

通常翻頁的效果不僅應用於某個

widget

本身,還要對其

children

產生效果。同時需要考慮渲染的效率問題。

本篇採用

qt+qml

進行程式設計,主要的邏輯用

qt實現,而最後將應用到

qml中,以實現自定義

qml item

及其巢狀

item

的翻頁效果。

對於最後的效果及效率,筆者只能說基本滿意。通篇只是對

qt程式設計的應用,水平有限,也沒能做到像

ios翻頁效果的逼真,和像

qml原生

element

的那麼高效及易用。當然,也希望有這方面經驗或者對此感興趣的朋友能夠與我聯絡,大家一起研究。

下面是最終的執行效果圖,實現步驟在最下面的實現章節鏈結中。

實現步驟:

(一)頁尾圖形的方程及演算法

(二)翻頁效果的模擬方法

(三)後續及效率優化的思考

QML 實現簡單的翻頁功能

利用動畫實現簡單翻頁。可以利用現有html5實現複雜效果。如下 visible true width 640 height 480 title qstr hello world color black 利用動畫實現簡單的翻頁效果。存在問題 如果是帶字的 則在翻轉過程中字型是反的。rectangle ...

翻頁效果的動畫實現

這篇文章是為在 的翻頁的實現的加入了一點點個人的優化,當然是在班門弄斧。本來應該把實現的 傳上來的,但是公司新出了規定。作了資訊保安處理,usb和上傳全作了限制,所有的 弄不出來,為把我的自動彈回的實現原理說一下。主要就是使用scroller 的彈回效果 首先重寫翻頁類的如下方法。public vo...

如何實現乙個翻頁效果的widget

說一下思路,widget是乙個remoteview,更新方式有些特殊,我在網上找了很久,最終想起來乙個同事做過這種效果,把他的原始碼拿過來看了下。他的思路是在布局裡給linearlayout設定動畫屬性,把自己想載入動畫的檢視放進去就行了。我們這裡實現的效果是垂直往下翻頁。其實就是乙個縮放動畫。這裡...