/*
* 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();
}
资源