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 类的基本使用指南。在实际开发中,你可以根据需要灵活运用这些方法来实现各种图形变换效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Bean的创建过程通常遵循以下步骤:

Spring框架是一个开源的Java平台&#xff0c;它以控制反转&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;为核心&#xff0c;提供了一个轻量级的解决方案来简化企业级应用程序的开发。Spring Bean是构成Spring应用的基本单位&#xff0c;它们由Spring IoC容…

力扣每日一题 6/6

2938.区分黑球与白球[中等] 题目&#xff1a; 桌子上有 n 个球&#xff0c;每个球的颜色不是黑色&#xff0c;就是白色。 给你一个长度为 n 、下标从 0 开始的二进制字符串 s&#xff0c;其中 1 和 0 分别代表黑色和白色的球。 在每一步中&#xff0c;你可以选择两个相邻的…

Camtasia Studio2024永久免费版及最新版本功能讲解

在当前数字化时代&#xff0c;视频内容的制作与编辑变得愈发重要。无论是企业宣传、在线教育还是个人Vlog制作&#xff0c;一款功能强大且易于上手的视频编辑软件成为了刚需。Camtasia Studio作为市场上备受欢迎的视频编辑与屏幕录像工具&#xff0c;凭借其强大的功能与用户友好…

站群服务器是什么?

站群服务器&#xff08;PBN&#xff0c;Private Blog Network是一种网络营销策略&#xff0c;旨在通过创建一组相互链接的博客或网站来提高搜索引擎排名 和流量。站群服务器通常由营销人员或网站所有者创建&#xff0c;旨在模拟有机的搜索引擎优化&#xff08;SEO&#xff09;信…

芒果YOLOv8改进169:即插即用 | 秩引导的块设计核心CIB结构,设计一种秩引导的块设计方案,旨在通过紧凑型架构设计减少被显示为冗余的阶段的复杂性

💡🚀🚀🚀本博客 秩引导的块设计,设计了一种秩引导的块设计方案,旨在通过紧凑型架构设计减少被显示为冗余的阶段的复杂性 :内含源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 文章目录 即插即用|秩引导的块设计|最新改进 YOLOv8 代码改进论文理论YOLO…

GA/T 1400视频汇聚平台EasyCVR级联后,平台显示无通道是什么原因?

国标GB28181安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台部署轻快&#xff0c;可支持的主流标准协议有GA/T 1400、国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。 有用户反馈&#xff…

289M→259M得物包体积治理实践

一、前言 iOS应用的包体积大小是衡量得物性能的重要指标&#xff0c;过大包体积会降低用户对应用的下载意愿&#xff0c;还会增加用户的下载等待时间以及用户手机的存储空间&#xff0c;本文重点介绍在包体积治理中的新思路以及原理与实践。 二、原理介绍 Macho产物测试 我…

【Java毕业设计】基于Java的教师考勤管理系统的设计与实现

文章目录 摘 要ABSTRACT目 录1 概述1.1 研究背景及意义1.2 国内外研究现状1.3 拟研究内容1.4 系统开发技术1.4.1 vue技术1.4.2 B/S结构1.4.3 Spring Boot框架1.4.4 MySQL数据库1.4.5 MVC模式 2 系统需求分析2.1 可行性分析2.2 功能需求分析 3 系统设计3.1 功能结构设计3.2 系统…

如何将confluence页面的内容保存为markdown格式

如何将confluence页面的内容保存为markdown格式 一.将网页另存为mhtml格式二.转换脚本(GPT-4O自动生成) 本文介绍了如何将confluence页面的内容保存为markdown格式 一.将网页另存为mhtml格式 二.转换脚本(GPT-4O自动生成) import email from bs4 import BeautifulSoup impor…

打造国产软硬件一体化解决方案 YashanDB与宏杉科技完成多项兼容互认证

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB与宏杉科技系列存储、系列服务器与数据库一体机等多款产品顺利完成兼容性互认证。经严格测试&#xff0c;双方产品完全兼容&#xff0c;稳定运行&#xff0c;共同提供高效、稳定、安全的国产软硬件一体化解决方案&…

pw备份问题

1、手动build&#xff0c;dn gs_ctl build -D /database/panweidb/data 或 gs_ctl build -D /database/panweidb/data -b full 2、拉起2节点cm cm_ctl start -n 2 3、启动cm_server服务 cm_ctl start 4、 netstat -anop|grep 17700 5、

龙迅#LT8711H支持TYPE-C/DP/EDP转HDMI功能应用,分辨率支持 1080p@60Hz,芯片内置固件!

1. 概述 LT8711H是一款高性能 Type-C/DP1.2/EDP 转 HD-DVI1.3 转换器&#xff0c;设计用于将 USB Type-C 源或 DP1.2 源连接到 HD-DVI1.3 接收器。 该LT8711H集成了符合 DP1.2 标准的接收器和符合 HD-DVI1.3 标准的发射器。此外&#xff0c;还包括两个用于 CC 通信的 CC 控制器…

C语言(联合和枚举)

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习笔记&#xff0c;在这里撰写成…

《贫穷的本质》

穷人获取的信息有限&#xff0c;存在认知上的差距&#xff0c;不了解自己现有的资源&#xff0c;并且合理使用。 self conclusion 1、由以下摘抄1有感而发&#xff1a;童年时期将很大程度上影响未来的发展。《贫穷的本质》一书告诉我们&#xff0c;孕妇和幼儿时期如果能提供更…

一个程序员的牢狱生涯(54)申请

星期二 申请 我和号子里的众人安静地看着电视。 在‘X闻联播’快要结束的时候,过道内响起了大铁栅栏被打开的声音,没有皮鞋声响起,看来是‘赵老大’走了进来。我想起白天的时候‘赵老大’曾和我说过,晚上可能会让我去他那间单独的号子里帮他写点东西,这次‘赵老大’进来也…

DNF游戏攻略:云手机征服大Boss迷雾技巧教程!

在DNF&#xff08;地下城与勇士&#xff09;的世界中&#xff0c;大Boss迷雾是一场挑战&#xff0c;但也是一次机会。掌握各种机制和技巧将是你击败迷雾的关键。在这篇攻略中&#xff0c;我们将详细介绍常见的机制和对应的应对策略&#xff0c;帮助你轻松通关。同时如何轻松助力…

解决国内无法访问huggingface.co

在国内无法访问 https://huggingface.co 时&#xff0c;可以使用国内的镜像站点&#xff1a; HF-Mirror - Huggingface 镜像站加速访问Hugging Face的门户。作为一个公益项目&#xff0c;我们致力于提供稳定、快速的镜像服务&#xff0c;帮助国内用户无障碍访问Hugging Face的…

vue3将自定义组件插入指定dom

需求简要描述 页面渲染了一个 id 为 videoPlayerId 的div盒子&#xff0c;代码自定义了一个名为CustomComponent 的组件&#xff0c;现在需要在vue3中&#xff0c;通过纯 js 的方式将组件 CustomComponent 插入 videoPlayerId 的div中&#xff0c;作为其子节点。 实现代码 C…

为啥要在虚拟机上搞开发呢:一个码农的Mac折腾史

作为一个码农&#xff0c;我一直在不停地学习新技术&#xff0c;适应新环境。但说实话&#xff0c;我最大的挑战之一是那天我决定从 Windows 转投 Mac 的阵营。 一开始&#xff0c;我还挺犹豫的。 Windows 和 Linux 一直是我求学和工作的得力伙伴。我在那个熟悉的世界里觉得很…

电流继电器JL-31 柜内固定安装 约瑟JOSEF

JL系列电流继电器型号&#xff1a; 电流继电器JL-31 电流继电器JL-31C/1 电流继电器JL-31A 电流继电器JL-31/B 电流继电器JL-32BP 电流继电器JL-22 电流继电器JL-21 电流继电器JL-21B 电流继电器JL-23 电流继电器JL-11 电流继电器JL-11/2G 电流继电器JL-11C 电流继电器J…