/*
* 一、新建QT GUI, 基類選擇QWidget,取消「建立界面」
* 二、添加資源文件qtlogn:在項目之下添加一個「resources」文件,裏面存放"qtblog.png",而後
* 文件-->新建文件/項目--->Qt---> Qt Resource File
* 三、在widget.h中添加#include <QPainter>和重寫繪畫事件定義:
* protected:
void paintEvent(QPaintEvent *event);
* 四、在widget.cpp中編寫重繪事件
*/this
一、座標原點移動:3d
void Widget::paintEvent(QPaintEvent *event) { QImage image("F:\\MyCode\\qtblog.png"); QPainter painter(this); //this表示激活畫筆 painter.setPen(QPen(Qt::blue, 1, Qt::DashLine)); painter.drawRect(0, 0, 100, 100); QTransform transform; transform.translate(50, 50); //將座標從當前座標原點沿着x軸前進50,沿着y軸前進50 painter.setTransform(transform); painter.drawImage(0, 0, image); painter.end(); }
二、座標系統旋轉rotatecode
void Widget::paintEvent(QPaintEvent *event) { QImage image("F:\\MyCode\\qtblog.png"); QPainter painter(this); //this表示激活畫筆 painter.setPen(QPen(Qt::blue, 1, Qt::DashLine)); painter.drawRect(0, 0, 100, 100); QTransform transform; transform.translate(50, 50); //座標沿着x軸前進50,沿着y軸前進50 transform.rotate(45); //默認座標沿着z軸旋轉 // transform.rotate(70); transform.rotate(45,Qt::ZAxis); painter.setTransform(transform); painter.drawImage(0, 0, image); painter.end(); }
void Widget::paintEvent(QPaintEvent *event) { QImage image("F:\\MyCode\\qtblog.png"); QPainter painter(this); //this表示激活畫筆 painter.setPen(QPen(Qt::blue, 1, Qt::DashLine)); painter.drawRect(0, 0, 100, 100); QTransform transform; transform.translate(50, 50); //座標沿着x軸前進50,沿着y軸前進50 transform.rotate(70,Qt::YAxis); painter.setTransform(transform); painter.drawImage(0, 0, image); painter.end(); }
void Widget::paintEvent(QPaintEvent *event) { QImage image("F:\\MyCode\\qtblog.png"); QPainter painter(this); //this表示激活畫筆 painter.setPen(QPen(Qt::blue, 1, Qt::DashLine)); painter.drawRect(0, 0, 100, 100); QTransform transform; transform.translate(50, 50); //座標沿着x軸前進50,沿着y軸前進50 transform.rotate(80,Qt::XAxis); painter.setTransform(transform); //設置當前旋轉座標爲畫筆座標 painter.drawImage(0, 0, image); painter.end(); }
三、座標縮放:從而實現圖形縮放orm
void Widget::paintEvent(QPaintEvent *event) { QImage image("F:\\MyCode\\qtblog.png"); QPainter painter(this); //this表示激活畫筆 painter.setPen(QPen(Qt::blue, 1, Qt::DashLine)); painter.drawRect(0, 0, 100, 100); QTransform transform; transform.translate(50, 50); transform.rotate(45); transform.scale(0.5, 0.5); //橫向和縱向的縮放比例,大於1放大,小於1縮小 painter.setTransform(transform); painter.drawImage(0, 0, image); painter.end(); }
資源blog