如何用QT实现一个极其简单的动画?

如何用QT实现一个极其简单的动画?,第1张

用Qt中QPropertyAnimation 类实现简单的小动画

参考代码如下:

.h文件

#ifndef MOVEWIDGET_H

#define MOVEWIDGET_H

#include <QtGui/QWidget>

#include <qpropertyanimation.h>

#include <QLabel>

#include <QApplication>

class MoveWidget : public QWidget

{

Q_OBJECT

public:

MoveWidget(QWidget *parent = 0)

~MoveWidget()

private:

void star()

private:

QPropertyAnimation *animation,

*animation2

QLabel *myWidget,

*myWidget2

QString path

}

#endif // MOVEWIDGET_H

.cpp文件

#include "movewidget.h"

#include "qsequentialanimationgroup.h"

#include "qparallelanimationgroup.h"

MoveWidget::MoveWidget(QWidget *parent)

: QWidget(parent)

{

this->path = QApplication::applicationDirPath()

this->myWidget = new QLabel(this)

this->myWidget2 = new QLabel(this)

this->animation = new QPropertyAnimation(myWidget,"geometry")

this->animation2 = new QPropertyAnimation(myWidget2,"geometry")

//常见QPropertyAnimation对象,关联了myWidget这个窗体的几何属性

this->star()

}

void MoveWidget::star()

{

this->myWidget->setPixmap(QPixmap(this->path + "/hello.png"))

this->myWidget2->setPixmap(QPixmap(this->path + "/hello1.png"))

this->animation->setDuration(2000)//速度,越小越快

this->animation->setStartValue(QRect(0,0,158,168))

this->animation->setEndValue(QRect(250,250,158,168))

// this->animation->setEasingCurve(QEasingCurve::OutBounce)//outbounce有一个缓冲的现象

// this->animation->setEasingCurve(QEasingCurve::OutBack)//outback缓慢降落

// this->animation->setEasingCurve(QEasingCurve::OutCirc)//outcirc和outback差不多

this->animation->setEasingCurve(QEasingCurve::OutInQuart)

this->animation->start()

this->animation2->setDuration(2000)

this->animation2->setStartValue(QRect(0,360,158,168))

this->animation2->setEndValue(QRect(110,180,158,168))

this->animation2->setEasingCurve(QEasingCurve::OutBounce)

this->animation2->start()

}

MoveWidget::~MoveWidget()

{

}

动画框架由基类QAbstractAnimation以及它的两个子类QVariantAnimation、QAnimationGroup组成。基础动画由QVariantAnimation的子类QPropertyAnimation来设置,再通过将多个QPropertyAnimation和QPauseAnimation组合成为动画组(QParallelAnimationGroup、QSequentialAnimationGroup),完成一个连续的动画。

QPropertyAnimation类能够修改Qt的属性值,如pos、geometry等属性。设置好动画的初值和末值,以及持续的时间后,一个属性动画就基本完成了。

通过修改控件的geometry属性可以实现缩放效果,也可以实现位移的动画,该属性的前两个值确定了控件左上角的位置,后两个值确定了控件的大小。

如果只是需要位移动画的话,修改控件的pos属性即可。pos属性就是控件的左上角所在的位置。

Qt的控件没有单独的透明度属性,要修改控件的透明度可以通过QGraphicsOpacityEffect类来实现。

动画还可以设置时间的插值曲线,默认是linear,即线性运动,通过设置QEasingCurve即可。Qt提供了40种已经定义好的曲线(如果有需要也可以自定义曲线):

通过将QPropertyAnimation或者QPauseAnimation加入,构成一个按加入顺序依次播放的动画组,动画组的总时长是各个加入动画的总和。

Qt的动画可以设置循环次数,默认的循环是从头再播放一遍,往返运动可以在一个串行动画组中加入初值末值相反的一组动画来实现。

加入并行动画组的动画会同时播放,动画组的总时长是最长的动画所需的时间。

在串行动画组的开始先加入一个QPauseAnimation,再将Pause不同的串行动画组加入并行动画组就可以实现延时效果了。

默认动画是从开始到结束这个方向播放的, 可以设置为从结束到开始播放。

综合几个小栗子:

举个栗子:->Github链接地址

一、前期准备要想做出清晰的视频录像需要准备以下工具:

1、Fraps(必备)

这是一款屏幕录像软件,同平常我们拍摄的DV不太一样的是这个软件只能录取你自己屏幕上的画面,但是清晰度非常的高,其原理类似于用极快的速度在屏幕上进行截图合并成视频的过程。我要下载 2、Windows Movie Maker:(必备)

这是微软推出的视频处理软件, *** 作很方便,即使从来没用过的新手也能很快掌握,大部分WinXp *** 作系统都附带有这个软件,推荐版本:V2.1。我要下载3、暴风影音播放器(可选)

由于用Fraps录制的视频需要解码器才能正常播放,有些电脑上可能会缺少相应的解码器,因此建议安装暴风影音播放器,这个播放器能够播放市面上绝大多数的各种格式视频。我要下载

以上介绍的工具进行简单制作够用了,如果需要做专业化的编辑合成推荐使用Premiere或者MediaStudio这些工具。

除了以上的软件需求之外,Fraps进行录像的时候对硬件要求也比较高,主要是内存和CPU的需求,一般来说512M内存的机器基本可以进行 *** 作,但是尽量把常驻内存的软件关掉,只留和QQ。 二、安装软件下载Fraps和Windows Movie Maker、暴风影音并进行安装

注意安装Fraps的时候要注意汉化包后进行安装并且安装目录要与源安装文件相同。

(安装目录就是录制视频的默认目录哦,录制好的视频去那里找。 Fraps是一款专门录制游戏画面的软件,它设置简单,采集效果优秀,深得玩家喜爱,本文介绍如何使用其进行视频采集,帮助你制作自己的视频。 一、如何获得

Fraps是一款共享软件,最新版本是2.6.4(截止05年10月24日) 点击下载 二、如何安装

Fraps的安装简单,只需要一路Next即可,需要注意的是所安装的目录会成为你默认存放采集到的视频的位置,建议将存放位置和程序放在同一个盘符下。如果时间很长的话,采集到的数据会很大,请注意硬盘空间。 三、界面介绍

这是Fraps的界面,分为General-概要,FPS-帧数,Movies-视频录制,Screenshots-截图 我们只需要关注Movies即可

- Folder to save movies in – 存放采集到的文件的地址

- Video Capture Hotkey – 采集快捷键

- Size – 选择你需要半尺寸(half-size)还是全尺寸(Full-size)的视频,由于Fraps不能够采集过大的分辨率(例如1600*1200),所以这里一般选择Half-size

//Full-size最大支持的分辨率:1152x864 (4:3) 或 1280x720 (宽屏)

Half-size最大支持的分辨率: 2048x1536//

- xx fps – fps是指帧速,也就是说Fraps每秒采集多少次,这个值最好不要高过你电脑可以跑游戏的最大帧数(游戏内Ctrl+r察看),这里一般选择25或30帧即可。

- Record Sound:你如果想录制游戏内的声音,或者一边录制一边用麦克风进行解说,便可点选此项

- Sound Device/Sound Input:选择你要的录制方式。

//请注意,在个别游戏内录制游戏声音可能会导致程序异常退出,请慎用//

- No cursor – 不显示指针

- No sync – 不同步 四、录制

进入游戏后,按下你设定的快捷键(默认F9),即可录制,录制完成后,再次按下F9即可结束该片段。用AVI 1.0方式录制的片段会很庞大,1秒就需要几M的空间。录制完成后,便会在Fraps程序目录下存下文件。五、非编软件Windows Movie Maker使用指南一、概念

一部“电影”是由什么组成的?是由无数个片段,无数段音频,以及字幕所组成的,我们只需要控制这3个元素,就可以制作出一部影片。什么?你说创意?创意是在你的脑子里的,我可教不了你。 二、WMM

WMM是免费的,Windows XP就自带,而且非常好用 WMM有几个部分,最上面是菜单栏,中间靠左是任务步骤,你可以简单的通过这几个步骤完成一部简单的电影,中间是你的素材栏,你可以选择你要的视频/音频/效果片断,右边则是预览窗口,最下面是时间线,学过Flash制作的朋友应该很容易理解,当然这里可没有无数个层和关键帧-_- 三、制作视频

1、捕获:捕获是指你获得电影片断的步骤,我已经介绍过如何用fraps录制片段了,这里就不多说了。把视频/音频拖进收藏栏内备用即可。

2、编辑电影

a、视频过渡

如何在2个片段之间添加效果?例如我想在2次pk中用翻页效果切换?

点击时间线上方的“显示情节提要”,在收藏内选择视频过渡,将你喜欢的效果拉入下方时间线内2个片段之间的过渡框内b、添加字幕

在工具内选择“片头和片尾”,并且选择“在时间线中的选定剪辑之上添加片头”,写下你喜欢的字之后,选择下面的更改字体或动画效果,完成后点击“完成,为电影添加片头”,你会看到字幕出现在片头时间轴内,拖动它,把它放到你喜欢的位置。 c、添加背景音乐

在收藏内拖入一段音乐,将其拖入时间轴内的“音频/音乐”内,你会发现音乐很长,利用剪辑菜单内的“设置起始/终止剪彩点”,对音乐进行切割,然后拖动到你所需要的位置即可。

一部简单的电影就完成了,当然,你有兴趣的话可以换个效果,换个剪辑自己试试看,WMM虽然简单,但其实是非常好玩的。 四、导出视频

WMM提供许多种导出视频的方式,作用是可以将很大的源素材影片压缩成很小的WMV格式的影片。 选择“保存到我的计算机”,然后输入文件名,保存路径,下一步,选择需要压缩的速率(一般情况我推荐512k或1m即可,WMV的压缩率很高,能在很小的文件容量前提下压缩出尽可能高的画质),之后便是漫长的等待压缩完成的过程,如果影片很大的话,时间会非常长,建议你去看看电视,回来一切就都搞定了,发送给你的好朋友吧!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8043040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存