qt QTransform详解

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群:

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值