QTransform 笔记

QTransform世界变化 世界变化(QTransform )是在窗口-视口转换之外使用的变换矩阵 阅读详情

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

1. 引入头文件

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

#include <QTransform>

2. 创建 QTransform 对象

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

QTransform transform; // 默认构造函数,创建一个单位矩阵
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 类来完成的。

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

5. 组合变换

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

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

6. 获取和设置变换矩阵

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

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

7. 逆变换

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

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

8. 保存和恢复状态

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

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

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

Qt实现图片旋转的几种方式(全) 使用 QPainter 的旋转函数,手动计算旋转后的坐标并绘制图像。这种方式需要自己处理旋转后的坐标变换,相对复杂一些。使用 QGraphicsView 架构绘制图形对象,并在 QGraphicsScene 中添加 QGraphicsPixmapItem,然后通过旋转 QGraphicsPixmapItem 实现图像旋转。使用 QTransform 类来应用变换,通过旋转矩阵来对图像进行旋转,然后使用 QPainter 绘制旋转后的图像。这种方法能够简化坐标变换的操作。 阅读详情

相关推荐

【Qt开发教程】矩阵变换类QTransform详解及实战应用:3x3矩阵,支持浮点运算,适用于高精度的图形变换和复杂的2D几何操作,支持平移、旋转、缩放和倾斜等

QTransform 提供了一种强大而灵活的方式来进行2D平面上的平移、旋转、缩放和倾斜等变换操作。通过组合多个变换、使用逆矩阵、处理鼠标事件和实现动态效果,可以构建丰富的图形用户界面。在实际应用中,通过优化变换参数、映射点和矩形、动态调整动画效果,可以实现准确和高效的图形变换。注意设置正确的变换顺序、合理计算逆矩阵和动态调整动画效果,确保变换的正确性和高效性。结合其他 Qt 类和方法,可以实现更多高级功能和应用场景,提高应用的灵活性和可维护性。

科技改变人类,技术成就未来 1420

Qt之图形(转换)

简述 QTransform 用于指定坐标系的 2D 转换 - 平移、缩放、扭曲(剪切)、旋转或投影坐标系。绘制图形时,通常会使用。 QTransform 与 QMatrix 不同之处在于,它是一个真正的 3x3 矩阵,允许视角转换,QTransform 的 toAffine() 方法允许将 QTransform 转换到 QMatri...

weixin_34114823的博客 932

QT的QTransform类的使用

详细说明 QTransform类指定坐标系的2D转换。 转换指定如何平移,缩放,剪切,旋转或投影坐标系,通常在渲染图形时使用。 QTransform与QMatrix的不同之处在于,它是真正的3x3矩阵,允许透视转换。 QTransform的toAffine()方法允许将QTransform强制转换为QMatrix。如果在矩阵上指定了透视变换,则该变换将导致数据丢失。 QTransform是Qt中推荐的转换类。 可以使用setMatrix(),scale(),rotate(),translate()和shea

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2432

【qt】QTransform类使用

QTransform类主要用于创建一个3*3的变换矩阵,该矩阵用于坐标系的2D变换。该类取代了QMatrix类(此类已过时)。

lsz441的博客 1812

VTK的编译和部署,配合c++和visual studio2022,VTK开发环境的配置

在官网选择最新的版本下载之后进行解压,然后再里面创建build目录,方便后面使用cmake进行编译。

dz131lsq的博客 3223

Zuken E3.series schematic/cable/Formboard 连载(1)

​ 1987-2001年,CIM-Team公司(德国)推出基于MS-DOS环境下运行的CAD软件DDS-schematic 2002年,在此基础上,推出基于windows环境下运行,应用于电气工程领域的E3.Series 2002-2006年,CIM-Team公司成为Zuken公司(日本)的一家分公司,实现电子电气系统的完整设计平台 覆盖电子、电气原理设计,三维机柜设备布局与配线设计,线缆线束设计及其各类生产报表文档生成的完整设计流程

u010930036的博客 2504

QT之QTransform

QT之QTransform

techenliu的博客 569

机器学习笔记之玻尔兹曼机(一)基本介绍

在受限玻尔兹曼机——模型表示(Representation)一节中以玻尔兹曼机为引,介绍了受限玻尔兹曼机。从本节开始,将正式介绍玻尔兹曼机。相比于它的表示和推断过程,我们更关注它在求解过程中出现的问题。

静静的学习就好 7924

Qt学习笔记#5:QTransform

QTransform类QTransform类用于控制二维坐标系之间的转换包含:位移、缩放、扭曲、旋转还有映射首先看它的核心内容:这是一个仿射变换矩阵(affine transformation),它包含了坐标系转换所需要的所有信息 element description m11 水平缩放 m22 垂直缩放 m21 水平扭曲 m12 垂直扭曲 m31(dx)

founderznd 1万+

ICCompiler II学习笔记(一)ICC II使用全流程 overview

学习笔记同步发布在我的个人网站上,欢迎来访查看。 个人学识有限,理解可能有误,仅供参考。 文章目录一、前言二、 ICC II 简介和 GUI2.1 Blocks 和 Design Libraries2.2 Objects2.3 Application Options三、Design Setup四、APR flow五、 课程主题:如何用 ICC II来实现最好的PPA 一、前言 现在的芯片都在追求一个极致的PPA 芯片的生成可以分为以下 5大步骤: Front-end Design:前端设计,最终产生

一名FPGA芯片设计爱好者的技术博客 2万+

项目经理面试 5 大高频题 + 实战回答模板,帮你稳拿 offer

项目经理面试5大高频问题及应答技巧 摘要:本文总结了项目经理岗位常见的5个面试问题及回答策略,帮助求职者更有针对性地准备面试。核心问题包括:1)描述负责过的典型项目;2)常用项目管理工具;3)项目遇到的挑战及解决方案;4)风险管理方法;5)项目成功标准。每个问题都从面试官考察重点、回答技巧、实战案例三个维度进行分析,强调要用STAR法则(情境-任务-行动-结果)结构化表达,突出解决问题的能力而非简单罗列经历。特别提醒要量化项目成果(如提前2周上线、节省8%预算等),并注意展示商业思维和团队协作能力。

逸尘谈PM 2105

【笔记】QT坐标转换(QTransform 类)

返回此矩阵的逆矩阵,若矩阵是奇异的(非可逆的),则返回的矩阵是单位矩阵,若参数invertible 有效(即不为 0),则若矩阵可逆,则将其设置为 true,否则将其设置为 false。设置世界变换矩阵,若 combine 为 true,则把当前矩阵与 transform 组合,否则 transform会取代当前矩阵。若 enable 为 true 则启用世界转换,否则禁用世界转换,世界变换矩阵不会改变。若矩阵表示的是仿射(affine)变换,则返回 true,否则返回 false。与 scale();

Ray 4592

Vue - 详细完美解决 ElementUI MessageBox “多次“ 弹框问题,让其无论执行多少次都只弹出来一次(常见于请求拦截器多次触发弹框,导致弹出来很多个)详细示例代码,保证完美解决!

vue如何防止ElementUIMessageBox多次弹框,vueelement弹框弹出来很多次怎么办,elementvueMessageBox解决执行多次后出现多次弹框的问题,elementUI如何阻止MessageBox多次弹出来,vue+element解决多个请求同时报错,弹出多个消息框message,饿了么组件库MessageBox弹框频繁弹出解决方法,vue调用MessageBox出现多次弹框,vueelementMessageBox怎么只弹出一次,vue之axios请求

🏆 前端领域优质创作者 8196

学习笔记 QTransform的坐标/图形/坐标系变换(平移、旋转的坐标移动等)

对于坐标或者图形的空间变换有两种方式。第一种是直接对坐标或图形进行变换;第二种是对坐标或图形所在的坐标系进行变换。这两种方法都可以用QTransform类来实现。 一 坐标、图形变换 这里就用三种例子 QPoint、QRect和QPolygon展示。 QTransform & translate(qreal dx, qreal dy)//平移,将xy按dx、dy平移 QTransform & scale(qreal sx, qr...

weixin_60828461的博客 5221

华为od机试|华为od机试真题2025|华为od题库|华为od机考|2025C卷B卷

华为od机试|华为od机试真题2025|华为od题库|华为od机考|华为od机试|华为od机试真题2025|华为od题库|华为od机考|华为od机试|华为od机试真题2025|华为od题库|华为od机考|华为od机试|华为od机试真题2025|华为od题库|华为od机考|B卷C卷

u014481728的博客 10万+

使用Simulink对基于GaN器件的高频电源进行建模与仿真,重点在于优化其效率

本文介绍了基于Simulink的GaN器件高频电源仿真建模方法。通过7个步骤详细讲解系统构建过程:从创建模型、设置电源、配置GaN开关网络,到添加磁性元件、负载和控制器设计,最后进行仿真分析。重点探讨了效率优化策略,包括开关频率选择、磁性元件优化、散热设计改进及控制策略调整。该教程为GaN器件在电力电子系统中的应用提供了完整的仿真流程指导,有助于设计人员验证方案并优化性能。

amy_mhd的博客 234

QTransform

一、描述 QTransform是Qt中推荐的转换类。转换指定如何平移,缩放,剪切,旋转或投影坐标系,通常在渲染图形时使用。 QTransform类支持矩阵乘法,加法和减法,并且可以流式传输和比较该类的对象。 1.1、渲染图形 渲染图形时,矩阵定义了转换,但是实际的转换由QPainter执行。默认情况下,QPainter在关联设备自己的坐标系上运行。QPaintDevice的标准坐标系的原点位于左上角。x值向右增加; y值向下增加。 QPainter具有无需使用QTransform即可平移,缩放,剪

友善啊,朋友的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

QTransform的使用

QTransfrom的原理及使用

weixin_42219627的博客 1001

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

QTransform 进行平移、旋转、镜像等操作

QTransform 与 QMatrix 不同之处在于,它是一个真正的 3x3 矩阵,允许视角转换,QTransform 的 toAffine() 方法允许将 QTransform 转换到 QMatrix。可见,对于QMatrix,m13和m23总是0,m33总是1,而这些元素在QTransform却是为了投影变换(projection transformation)来使用,可见QTransform相比于QMatrix支持的变换更丰富了~此文章为转载记录,如有侵权,请联系删除。

chenxipu123的博客 2769

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

QTransform 简介

QTransform是Qt图形框架中的一个重要类,它用于执行二维图形的几何变换,如平移、缩放、旋转等。通过QTransform,开发者可以轻松地改变图形元素的形状、大小和位置,从而满足复杂的图形绘制和动画需求。

github_37290846的博客 1343

QTransform 解析

实例: 以点(100,100) 围绕点(200,150)旋转45°后的坐标, 采用QTransform 类方法实现移动变换.,将在旋转后的坐标系下面, X轴方向偏移200,Y轴偏置150.将以(-200,-150)为原点,旋转坐标系45°.采用一个QTransform 对象,通过连续的变换后,发现最后的结果与预先的不一致.采用多个QTransform 对象,保证每个变换对象的初始原点坐标始终是(0,0).也可以单独一步一步的变换后,将上一步的结果作为下一步的输入点.

BlueMan 568

QT QTransform与QMatrix 有啥区别?QT QTransform 旋转 镜像 平移等操作

刚开始学习QT,我使用的是QT5.12进行开发,要不时地查阅QT的官方帮助文档~ 仔细阅读QT官方帮助QTransform类以及QMatrix类,发现两个类的作用描述一模一样(“The QTransform class specifies 2D transformations of a coordinate system.”以及“The QMatrix class specifies 2D transformations of a coordinate system.”),它们两者有什么区别呢? @

heiqihp的专栏 1530

QTransform使用心得(一)--解析QTransform的用法

摘要:QTransform的变换操作顺序与调用顺序相反。若需先伸缩后旋转,应先声明QTransform对象,再依次调用rotate()和scale()。通过两个实例验证:1)点(100,50)先x轴拉伸2倍再旋转45°,Qt计算结果与理论推导完全一致;2)点(100,50)先平移(10,40)再x轴压缩50%最后旋转15°,Qt输出与预期相符。实验证明,QTransform采用后进先出的变换堆栈机制,实际执行顺序与函数调用顺序相反,这一特性在组合变换时需要特别注意。

liji_digital的博客 246

QT QTransform与QMatrix 有啥区别?

刚开始学习QT,我使用的是QT5.12进行开发,要不时地查阅QT的官方帮助文档~ 仔细阅读QT官方帮助QTransform类以及QMatrix类,发现两个类的作用描述一模一样(“The QTransform class specifies 2D transformations of a coordinate system.”以及“The QMatrix class specifies 2D tr...

weixin_30784141的博客 1392
上一篇: QTransform 简介
下一篇: Qt Graphics View Framework 简介
低配天才
博客等级 码龄10年 277粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值