一 绘制图片
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实现图片旋转