• QTransform 笔记


    QTransform 是 Qt 中用于处理二维图形变换的一个类,它提供了一系列的方法来平移、旋转、缩放和剪切图形。以下是 QTransform 类的基本使用指南:

    1. 引入头文件

    在使用 QTransform 类之前,你需要在你的代码中包含相应的头文件:

    #include 

    2. 创建 QTransform 对象

    你可以通过多种方式创建 QTransform 对象,包括默认构造函数、复制构造函数以及从其他变换矩阵初始化等。

    1. QTransform transform; // 默认构造函数,创建一个单位矩阵
    2. QTransform transform2(transform); // 复制构造函数

    3. 设置变换

    QTransform 类提供了多个方法来设置不同的变换,如下所示:

    • 平移:将图形沿x轴和y轴移动指定的距离。

    transform.translate(dx, dy);

    • 旋转:围绕原点旋转图形指定的角度(以度为单位)。

    transform.rotate(angle);

    • 缩放:沿x轴和y轴缩放图形。

    transform.scale(sx, sy);

    • 剪切:在x轴和y轴方向上剪切图形。

    transform.shear(sh, sv);

    4. 应用变换

    一旦你设置了所需的变换,你可以将这些变换应用到图形上。这通常是通过 QPainter 类来完成的。

    1. QPainter painter(this);
    2. painter.setTransform(transform);
    3. // 绘制经过变换的图形

    5. 组合变换

    你还可以组合多个变换,例如先旋转后平移。

    1. QTransform transform;
    2. transform.rotate(45); // 旋转45度
    3. transform.translate(100, 50); // 然后平移

    6. 获取和设置变换矩阵

    你可以直接访问和修改 QTransform 对象的内部矩阵。

    1. QTransform transform;
    2. transform.rotate(45);
    3. qreal m11 = transform.m11(); // 获取矩阵元素
    4. transform.setMatrix(m11, m12, m21, m22, dx, dy); // 设置矩阵元素

    7. 逆变换

    如果你需要对图形应用逆变换,可以使用 inverted() 方法。

    1. QTransform transform;
    2. transform.translate(100, 50);
    3. QTransform inverse = transform.inverted();

    8. 保存和恢复状态

    在进行复杂的变换时,你可能需要保存当前的状态,以便稍后可以恢复到该状态。

    1. QTransform transform;
    2. transform.rotate(45);
    3. painter.save(); // 保存当前状态
    4. painter.setTransform(transform);
    5. // 绘制图形...
    6. painter.restore(); // 恢复到之前保存的状态

    以上就是 QTransform 类的基本使用指南。在实际开发中,你可以根据需要灵活运用这些方法来实现各种图形变换效果。

  • 相关阅读:
    1、拓扑排序 2、逆拓扑 3、i到j之间长度为k的路径 4、i到j之间包含顶点x的路径是否存在 5、如果边是带权的,求解 i 到 j 之间长度最长的路径
    docker compose 管理应用服务的常用命令
    Daos部署要求
    maven 打包 deploy 项目时 出现 401 Unauthorized
    题目 1060: 二级C语言-同因查找
    laravel教程
    专业课140+杭电杭州电子科技大学843信号与系统考研经验电子信息与通信工程真题,大纲,参考书。
    qt day2
    01-简单字符串题目
    网络安全复习笔记
  • 原文地址:https://blog.csdn.net/github_37290846/article/details/139459251