一 繪製圖片
1.1 效果圖
1.2 代碼
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include <QPainter>
#include <QPixmap>
#include <QPaintEvent>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTimer *tim = new QTimer(this);
connect(tim,SIGNAL(timeout()),this,SLOT(update()));
tim->start(30);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent *)
{
//通過修改“5”來更改圖片轉動速度
static int rat = 0;
rat = rat >= 360 ? 0 : rat + 5;
QPainter painter(this);
painter.setRenderHint( QPainter::Antialiasing );
//設置顏色
QColor quadColor( 60, 60, 120 );
painter.setBrush( quadColor );
//設置旋轉圖片時的中心點
painter.translate( 200, 200 );
//設置圖片旋轉角度
painter.rotate( rat );
//畫一個正方形
painter.drawRect( QRect( -50, -50, 100, 100 ) );
}
二 加載本地圖片
2.1 效果圖
2.2 代碼
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QQuickWidget>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTimer *tim = new QTimer(this);
connect(tim,SIGNAL(timeout()),this,SLOT(update()));
tim->start(30);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::paintEvent(QPaintEvent *)
{
QPixmap pix("F:/WorkSpace/QT/untitled/res/121.png");
static int rat = 0;
rat = rat >= 360 ? 0 : rat + 1;
int imageWidth = pix.width();
int imageHeight = pix.height();
QPixmap temp(pix.size());
temp.fill(Qt::transparent);
QPainter painter(&temp);
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
painter.translate(imageWidth / 2, imageHeight / 2); //讓圖片的中心作爲旋轉的中心
painter.rotate(rat); //順時針旋轉1度
painter.translate(-(imageWidth / 2), -(imageHeight / 2)); //使原點復原
painter.drawPixmap(0, 0, pix);
painter.end();
ui->label->setPixmap(temp);
}
參考文檔:Qt 旋轉圖片或控件
Qt實現圖片旋轉