Qt通過圖片組繪製動態圖片
阿新 • • 發佈:2020-07-13
本文例項為大家分享了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,80,91); QRect q2(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;
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。