Qt通过图片组绘制动态图片

所属分类: 软件编程 / C 语言 阅读数: 59
收藏 0 赞 0 分享

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

任务实现:

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

效果实现:

实现过程:

1.通过paintEvent()函数进行每一张图片的导入平铺绘制;
2.通过timerEvent()函数对每一张图片按照设定的时间进行重复的调用,从而达到动图的效果;
3.通过自定义InitPixmap()函数来对每一张图片进行初始化,将其导入到Pixmap[ 64 ]组中;

整体代码:

dialog.h

#ifndef DIALOG_H
#define DIALOG_H


#include <QDialog>


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 <QPainter>
#include <QPixmap>


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=0;i<64;i++)
  {
    QString filename = QString(":/Res/Resourse/1_%1.png").arg(i+1,2,10,QLatin1Char('0'));
    QPixmap map(filename);


    pixmap[i]=map;
  }
  
}

调用过程

1.通过InitPixmap()函数将六十四张图片保存在Pixmap数组中;
2.通过paintEvent()函数依次调用图片;
3.通过timerEvent()函数来设定调用的循环;
4在主函数中通过定时器设定调用间隔为100ms;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

在C语言中对utmp文件进行查找和写入操作的函数小结

这篇文章主要介绍了在C语言中对utmp文件进行查找和写入操作的函数小结,包括pututline()函数和getutline()函数以及getutid()函数,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言编程中从密码文件获取数据的函数总结

这篇文章主要介绍了C语言编程中从密码文件获取数据的函数总结,包括getpw()函数和getpwnam()函数以及getpwuid()函数,需要的朋友可以参考下
收藏 0 赞 0 分享

在C语言编程中设置和获取代码组数的方法

这篇文章主要介绍了在C语言编程中设置和获取代码组数的方法,分别为setgroups()函数和getgroups()函数的使用,需要的朋友可以参考下
收藏 0 赞 0 分享

使用C语言操作文件的基本函数整理

这篇文章主要介绍了使用C语言操作文件的基本函数整理,包括创建和打开以及关闭文件的操作方法,需要的朋友可以参考下
收藏 0 赞 0 分享

简要对比C语言中的dup()函数和dup2()函数

这篇文章主要介绍了简要对比C语言中的dup()函数和dup2()函数,是C语言入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言中对文件最基本的读取和写入函数

这篇文章主要介绍了C语言中对文件最基本的读取和写入函数,是C语言入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言中lseek()函数和fseek()函数的使用详解

这篇文章主要介绍了C语言中lseek()函数和fseek()函数的使用详解,是C语言入门学习中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言新建临时文件和临时文件名的方法

这篇文章主要介绍了C语言新建临时文件和临时文件名的方法,分别是mkstemp()函数和mktemp()函数的使用,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言的getc()函数和gets()函数的使用对比

这篇文章主要介绍了C语言的getc()函数和gets()函数的使用对比,从数据流中一个是读取字符一个是读取字符串,需要的朋友可以参考下
收藏 0 赞 0 分享

简单对比C语言中的fputs()函数和fputc()函数

这篇文章主要介绍了简单对比C语言中的fputs()函数和fputc()函数,注意其之间的区别,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多