Qt實例:圖片旋轉

一 繪製圖片

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實現圖片旋轉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章