用Qt动画框架设计飞入-消失特效
2013-05-08 11:12
330 查看
用Qt动画框架设计飞入-消失特效
Qt动画框架很强大,只要你想得到,它就有可能帮你实现。这一次我将抽取上一个演示程序的部分来进行介绍。这一部分我命名为“飞入 - 消失”特效,主要用在文字的显示方面,从这点上说很像PowerPoint上面特效的一种。还是首先看看我的demo吧。下载地址:这里
原创博客,反对未经允许的转载。原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/8899279
下面是FlyInVanish类的部分定义:
class FlyInVanishEffect: public QObject// 飞入 - 消失特效类 { Q_OBJECT Q_PROPERTY( QPointF Pos READ Pos WRITE setPos ) public: FlyInVanishEffect( QWidget* pWidget = 0 ); virtual ~FlyInVanishEffect( void ); void AddText( const QString& text ); void RenderPixmap( QPixmap& pixmap ); signals: void Start( void ); void VanishStart( void ); public slots: void StartEffect( void ); private slots: void PauseFinished( void ); private: void PreparePixmap( const QString& text ); DECLRARE_PROPERTY_WITH_GETTERS_AND_SETTERS( QPointF, Pos ) QStringList m_StringList;// 字符串列表 // 状态机部分 QState m_InitialState, m_MiddleState, m_FinalState; QStateMachine m_Machine; // 动画部分 QPropertyAnimation m_FlyInAnim, m_RiseAnim, m_VanishAnim; QParallelAnimationGroup m_VanishAnimGrp; QTimer m_PauseTimer; bool m_HasFinished; // 绘图部分 QPointF m_SavedPos; LinearGradient m_Gradient; QPixmap m_TextPixmap; // 父窗口指针 QWidget* m_pWidget; };这里我定义了三个状态和一个状态机。考虑到状态要循环切换,所以我没有使用QFinalState。而配合这些状态切换的是几个QPropertyAnimation的实例:m_FlyInAnim负责飞入,m_RiseAnim负责上升,而m_VanishAnim负责消失动画。其中m_RiseAnim和m_VanishAnim是并行进行的,所以需要一个QParallelAnimationGroup类的实例:m_VanishAnimGrp。此外我尝试了一下QPauseAnimation,似乎不能将它和其它的动画结合在一起,只能放在QSequentialAnimationGroup中,因此我没有使用这个类而是使用了一个QTimer来进行动画的延时。
其实这个特效的原理也很简单:首先维护一个字符串列表m_StringList,然后从中一个个拿出字符串,渲染成m_TextPixmap,最后对这个m_TextPixmap进行动画操作。最后LinearGradient类为了实现动画而继承自QObject和QLinearGradient,这样就有办法实现消失特效了。
在使用的时候,只要m_StringList有元素,调用StartEffect()这个函数就可以实施动画操作了。此外为了防止错误而新增了若干条判断语句,这些都在cpp文件中有所展现。详细情况请下载我的源代码。
下面是我制作的另一个程序,你可以在输入框中输入任何文字,只要按下了Enter键就可以启动动画。这里给出了演示程序和源代码。
演示程序下载地址:这里
源代码下载地址:这里
相关文章推荐
- Qt动画框架设计飞入-消失特效
- 使用Qt动画框架设计角色的二维动画(二)
- 使用Qt动画框架设计角色的二维动画(二)
- 使用Qt动画框架设计角色的二维动画
- Qt动画框架的学习
- QT动画框架
- Qt动画窗口,Qt之对话框消失动画
- js动画框架设计
- Qt之动画框架
- iOS Animation 主流炫酷动画框架(特效)收集整理
- Qt动画框架
- Qt动画框架
- 什么?!UI设计了新动画特效!别说话,Drawable来救你。
- Qt 动画框架
- Qt之动画框架
- Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美
- Qt动画框架
- Qt之动画框架
- 带37种3D动画特效的跨浏览器CSS3动画框架
- Qt动画框架-(1)简介