Qt 그림 그룹 을 통 해 동적 그림 그리 기

2729 단어 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()함 수 를 통 해 64 장의 그림 을 Pixmap 배열 에 저장 합 니 다.
2.paintEvent()함 수 를 통 해 그림 을 순서대로 호출 합 니 다.
3.timerEvent()함 수 를 통 해 호출 순환 을 설정 합 니 다.
4.주 함수 에서 타이머 로 호출 간격 을 100 ms 로 설정 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기