热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用C语言画出动态的图片,Qt通过图片组绘制动态图片

本文实例为大家分享了Qt通过图片组绘制动态图片的具体代码,供大家参考,具体内容如下任务实现:通过定时器的使用来依次调用资源文件中的静态图片

本文实例为大家分享了Qt通过图片组绘制动态图片的具体代码,供大家参考,具体内容如下

任务实现:

通过定时器的使用来依次调用资源文件中的静态图片文件,从而达到是图片中内容动起来的效果;

效果实现:

38425a2a28f0dd48acde1bd94a51abcf.gif

实现过程:

1.通过paintEvent()函数进行每一张图片的导入平铺绘制;

2.通过timerEvent()函数对每一张图片按照设定的时间进行重复的调用,从而达到动图的效果;

3.通过自定义InitPixmap()函数来对每一张图片进行初始化,将其导入到Pixmap[ 64 ]组中;

整体代码:

dialog.h

#ifndef DIALOG_H

#define DIALOG_H

#include

QT_BEGIN_NAMESPACE

namespace Ui { class Dialog; }

QT_END_NAMESPACE

class Dialog : public QDialog

{

Q_OBJECT

public:

Dialog(QWidget *parent = nullptr);

~Dialog();

void paintEvent(QPaintEvent *event);

void timerEvent(QTimerEvent *event);

int curIndex;

void InitPixmap();

private:

QPixmap pixmap[64];

Ui::Dialog *ui;

};

#endif // DIALOG_H

dialog.cpp

#include "dialog.h"

#include "ui_dialog.h"

#include

#include

Dialog::Dialog(QWidget *parent)

: QDialog(parent)

, ui(new Ui::Dialog)

{

ui->setupUi(this);

resize(160,182);

startTimer(100);

curIndex = 0;

InitPixmap();

}

Dialog::~Dialog()

{

delete ui;

}

void Dialog::paintEvent(QPaintEvent *event)

{

QPainter painter(this);

QRect q(0,0,80,91);

QRect q2(0,0,2*80,2*91);

painter.drawPixmap(q2,pixmap[curIndex],q);

}

void Dialog::timerEvent(QTimerEvent *event)

{

curIndex++;

if(curIndex>=64)

{

curIndex=0;

}

repaint();

}

void Dialog::InitPixmap()

{

for(int i&#61;0;i<64;i&#43;&#43;)

{

QString filename &#61; QString(":/Res/Resourse/1_%1.png").arg(i&#43;1,2,10,QLatin1Char(&#39;0&#39;));

QPixmap map(filename);

pixmap[i]&#61;map;

}

}

调用过程

1.通过InitPixmap()函数将六十四张图片保存在Pixmap数组中&#xff1b;

2.通过paintEvent()函数依次调用图片&#xff1b;

3.通过timerEvent()函数来设定调用的循环&#xff1b;

4在主函数中通过定时器设定调用间隔为100ms&#xff1b;

以上就是本文的全部内容&#xff0c;希望对大家的学习有所帮助&#xff0c;也希望大家多多支持猪先飞。



推荐阅读
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • C语言的经典程序有哪些
    本篇内容介绍了“C语言的经典程序有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何 ... [详细]
  • 注:根据Qt小神童的视频教程改编概论:利用最新的Qt5.1.1在windows下开发的一个小的时钟程序,有指针与表盘。1.Qtforwindows开发环境最新的Qt已经集 ... [详细]
  • ExcelApp#启动excel程序ExcelAppCreateOleObject(“Excel.Application”);#加载文件但不显示文件内容(true表 ... [详细]
  • 整个窗体当设置QT的窗体(QMainWindow,QDialog)时,直接用targetForm->setWindowOpacity()函数即可实现,效果为窗体及窗体内所有控件都透明化了。二、 ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
author-avatar
会哭的鱼2602919185
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有