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 로 설정 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qt 그림 그룹 을 통 해 동적 그림 그리 기본 논문 의 사례 는 Qt 가 이미지 그룹 을 통 해 동적 그림 을 그 리 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다. 타이머 의 사용 을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.