Qt之QtPainter:座標系統轉換[Qt5開發實戰]
阿新 • • 發佈:2021-01-30
技術標籤:mysqlsvneventunitywindows
/*
* 1、新建QT GUI, 基類選擇QWidget,取消“建立介面”
* 2、新增資原始檔qtlogn:在專案之下新增一個“resources”檔案,裡面存放"qtblog.png",然後
* 檔案-->新建檔案/專案--->Qt---> Qt Resource File
* 3、在widget.h中新增#include <QPainter>和重寫繪畫事件定義:
* protected:
void paintEvent(QPaintEvent *event);
* 4、在widget.cpp中編寫重繪事件
1、座標原點移動:
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(); }
2、座標系統旋轉rotate
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();
}
3、座標縮放:從而實現圖形縮放
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();
}
資源