1、概述
QTransform是Qt图形框架中的一个重要类,主要用于执行二维图形的几何变换,如平移、缩放、旋转等。通过QTransform,开发者可以轻松地改变图形元素的形状、大小和位置,从而满足复杂的图形绘制和动画需求。QTransform类通过操控一个3x3的变换矩阵来实现坐标变换,它可以替代已过时的QMatrix类。
2、重要方法
QTransform类提供了一系列重要的方法来执行不同的变换操作,以下是一些关键的方法:
- translate(qreal dx, qreal dy):平移变换,将图形在x轴方向移动dx单位,在y轴方向移动dy单位。
- scale(qreal sx, qreal sy):缩放变换,按sx和sy的比例分别缩放图形的宽度和高度。
- rotate(qreal angle):旋转变换,围绕原点将图形旋转指定的角度(单位为度)。
- mapToPolygon(const QPolygon &polygon):将一个多边形应用当前的变换,并返回变换后的多边形。
- inverted():返回当前变换的逆变换。
此外,QTransform还支持矩阵的加、乘等运算,以及对矩阵类型进行判断(比如是否是满秩矩阵等)。
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRectItem>
#include <QTransform>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建场景和视图
QGraphicsScene scene;
QGraphicsView view(&scene);
// 创建一个矩形项
QGraphicsRectItem *rect = scene.addRect(0, 0, 100, 50);
rect->setBrush(Qt::blue);
// 创建变换矩阵
QTransform transform;
// 平移
transform.translate(100, 100);
rect->setTransform(transform);
// 旋转 (45度)
transform.rotate(45);
rect->setTransform(transform);
// 缩放
transform.scale(1.5, 1.5);
rect->setTransform(transform);
// 错切
transform.shear(0.5, 0.0);
rect->setTransform(transform);
// 显示视图
view.resize(400, 400);
view.show();
view.setRenderHint(QPainter::Antialiasing);
// 设置场景范围并居中显示
view.setSceneRect(-200, -200, 400, 400);
view.centerOn(0, 0);
return app.exec();
}
技术交流qq群:
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!