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

 更新时间:2020年07月12日 11:40:55   作者:weixin_45752304  
这篇文章主要为大家详细介绍了Qt通过图片组绘制动态图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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语言与JAVA的区别是什么(推荐)

    C语言与JAVA的区别是什么(推荐)

    本文是小编给大家收集整理的关于C语言与Java的区别介绍,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-04-04
  • c/c++内存分配大小实例讲解

    c/c++内存分配大小实例讲解

    在本篇文章里小编给大家整理了一篇关于c/c++内存分配大小实例讲解内容,有需要的朋友们可以跟着学习参考下。
    2021-11-11
  • C++表达式求值详解

    C++表达式求值详解

    下面小编就为大家带来一篇浅谈C++ 语言中的表达式求值。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-10-10
  • C++深入分析STL中map容器的使用

    C++深入分析STL中map容器的使用

    map在编程中是经常使用的一个容器,本文来讲解一下STL中的map,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C++程序操作文件对话框的方法

    C++程序操作文件对话框的方法

    这篇文章主要介绍了C++如何操作文件对话框,本文我们就来讲述一下C++在操作文件夹对话框的相关细节,给大家借鉴和参考,感兴趣的朋友一起看看吧
    2022-06-06
  • C++继承详细介绍

    C++继承详细介绍

    这篇文章主要介绍了C++继承详情,在我们进行开发的时候,我们经常会遇到抽象出来的类之间具有继承关系。一个类继承了另外一个类,被继承的类成为基类或父类,继承的类成为子类或派生类,下面文章的详细内容,需要的小伙伴可以参考一下
    2022-01-01
  • 解决C++ fopen按行读取文件及所读取的数据问题

    解决C++ fopen按行读取文件及所读取的数据问题

    今天小编就为大家分享一篇解决C++ fopen按行读取文件及所读取的数据问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • C++使用TinyXML2实现解析和生成XML数据

    C++使用TinyXML2实现解析和生成XML数据

    TinyXML2是一个轻量级的、开源的C++库,专门用于解析和生成XML文档,本文主要为大家介绍了如何使用TinyXML2实现解析和生成XML数据,需要的可以参考下
    2024-04-04
  • C/C++题解LeetCode1295统计位数为偶数的数字

    C/C++题解LeetCode1295统计位数为偶数的数字

    这篇文章主要为大家介绍了C/C++题解LeetCode1295统计位数为偶数的数字示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 新手socket编程入门详解指南

    新手socket编程入门详解指南

    本文,将一步一步引导初学者来学习socket,所有编程思路都结合在socket API里面,以及提供socket的疑问和基础知识点,同时在最后给出多个例程,下面可以和小编一起学习
    2019-05-05

最新评论