QT之QMatrix

QT之QMatrix

    • 成员函数介绍
    • 使用注意
    • 函数的使用

成员函数介绍

reset():将矩阵重置为单位矩阵(无变换)。
translate():执行平移变换。例如,translate(qreal dx, qreal dy)将图形沿x轴和y轴方向分别平移dx和dy个单位。
scale():执行缩放变换。例如,scale(qreal sx, qreal sy)将图形在x轴和y轴方向分别缩放sx和sy倍。
rotate():执行旋转变换。例如,rotate(qreal angle)将图形旋转angle度。
shear():执行剪切变换。例如,shear(qreal sh, qreal sv)将图形沿x轴和y轴方向分别斜切sh和sv倍。
map():对给定的点进行矩阵变换。例如,map(qreal x, qreal y, qreal *tx, qreal *ty) const方法将对点(x,y)进行矩阵变换,并返回映射后的坐标位置。

使用注意

QMatrix只支持2D场景下的坐标系变换,如果需要在3D场景下进行坐标系变换,需要使用其他类,如QMatrix4x4等。
QMatrix的变换操作是累积的,即连续应用多个变换操作时,后一个操作会叠加到前一个操作上。
QMatrix可以与其他Qt类一起使用,如QPainter、QOpenGLWidget等,用于实现图元的放大缩小、图形的不规则展示、重复图形但有规律的绘制等等。
QMatrix的变换矩阵是按照列优先顺序存储的,即第一个元素为m11,第二个元素为m21,以此类推。

函数的使用

1)创建一个QMatrix对象,可以使用默认构造函数或者指定矩阵元素进行初始化。

QMatrix matrix;  
matrix.setMatrix(m11, m12, m21, m22, dx, dy);

2)使用QMatrix的方法进行图形变换操作,例如平移、旋转、缩放等。

matrix.translate(dx, dy); // 平移图形  
matrix.rotate(angle); // 旋转图形  
matrix.scale(sx, sy); // 缩放图形

3)将QMatrix应用到QPainter对象上,用于在绘制图形时实现变换效果。

QPainter painter;  
painter.begin(&image);  
painter.setMatrix(matrix); // 设置变换矩阵  
painter.drawRect(rect); // 绘制矩形  
painter.end();

4)可以使用QMatrix的map()方法对坐标点进行变换,得到变换后的坐标位置。

QPointF point(x, y);  
QPointF transformedPoint = matrix.map(point); // 将点按照当前矩阵进行变换

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

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

相关文章

MySQL增删改查

查询数据 MySQL 数据库使用 SQL SELECT 语句来查询数据。以下为在 MySQL 数据库中查询数据通用的 SELECT 语法: SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M] 查询语句中你可以使用一个或者多个表,表之间使用…

联想笔记本如何安装Vmware ESXi

环境: Vmware ESXi 8.0 Vmware ESXi 6.7 联想E14笔记本 问题描述: 联想笔记本如何安装Vmware ESXi 解决方案: 1.官网下载镜像文件 https://customerconnect.vmware.com/en/downloads/search?queryesxi%208 下载 2.没有账户注册一个 …

什么时候使用匿名类,匿名类解决了什么问题?为什么需要匿名类 ?

匿名类通常在以下场景下使用: 一次性使用: 当你需要创建一个类的实例,但该类只在一个地方使用,而不打算在其他地方重复使用时,可以考虑使用匿名类。 简化代码: 当创建一个小型的、一次性的类会让代码更简洁…

浅析特征增强个性化在CTR预估中的经典方法和效果对比

在CTR预估中,主流都采用特征embeddingMLP的方式,其中特征非常关键。然而对于相同的特征,在不同的样本中,表征是相同的,这种方式输入到下游模型,会限制模型的表达能力。为了解决这个问题,CTR预估…

12.14 log 376. 摆动序列,53. 最大子序和

376. 摆动序列 class Solution { public:int wiggleMaxLength(vector<int>& nums) {if(nums.size()1) return nums.size();int preDiff0;int curDiff0;int result1;for(int i0;i<nums.size()-1;i){curDiffnums[i1]-nums[i];if(preDiff<0&&curDiff>…

【每日一题】用邮票贴满网格图

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;二维前缀和二维差分 写在最后 Tag 【二维前缀和】【二维差分】【矩阵】【2023-12-14】 题目来源 2132. 用邮票贴满网格图 题目解读 在 01 矩阵中&#xff0c;判断是否可以用给定尺寸的邮票将所有 0 位置都覆盖住&…

智能优化算法应用:基于黄金正弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于黄金正弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于黄金正弦算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.黄金正弦算法4.实验参数设定5.算法结果6.…

GeoTrust OV证书

当谈到网站安全性和可信度时&#xff0c;GeoTrust OV证书是一个备受推崇的选择。作为一家备受尊敬的数字证书颁发机构&#xff0c;GeoTrust以其卓越的品牌声誉和高质量的产品而闻名于世。GeoTrust OV证书提供了一系列的安全功能&#xff0c;同时还具有出色的性价比&#xff0c;…

再探再报:SQL中的关联查询

在 SQL 中进行关联查询&#xff08;或称联接查询&#xff09;时&#xff0c;有几种不同的语法来执行这些查询&#xff0c;常见的包括&#xff1a; 使用 JOIN 关键字&#xff1a;JOIN 关键字可与不同类型的联接组合使用&#xff0c;如 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL …

DPDK多进程之间的通信

文章目录 前言本机DPDK IPC API介绍demo演示 前言 DPDK的主进程和辅助进程之间共享大页内存。关于DPDK多进程的支持文档介绍见&#xff1a;47. 多进程支持。 本文介绍本机DPDK的主进程和辅助进程之间交换短消息的API的使用。 前置要求&#xff1a;DPDK-Hello-World示例应用程…

系统级基础信号知识【Linux】

目录 一&#xff0c;什么是信号 进程面对信号常见的三种反应概述 二&#xff0c;产生信号 1.终端按键产生信号 signal 2. 进程异常产生信号 核心转储 3. 系统调用函数发送信号 kill raise abort 小结&#xff1a; 4. 由软件条件产生 alarm 5. 硬件异常产生信号…

解锁MSSQL存储过程优化之道:参数化查询的技术深度探究

数据库是现代应用的支柱&#xff0c;而MSSQL作为其中的瑞士军刀&#xff0c;其性能直接关系到系统的稳定与响应速度。本文将带领读者深入探讨MSSQL存储过程优化的精髓之一——参数化查询。跟随着我们的脚步&#xff0c;你将领悟到优化的本质&#xff0c;发现隐藏在参数化查询背…

WEB服务器介绍

Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器连到服务器上并请求文件时&#xff0c;服务器将处理该请求并将文件发送到该浏览器上&#xff0c;附带的信息会告诉浏览器如何查看该文件&#xff0c;即文WEB服务器件类型。服务器使用HTTP进行信息交流&#xff0c…

Java之异常

一、异常是什么 程序在执行过程中&#xff0c;出现的非正常的情况&#xff0c;最终会导致JVM的非正常停止。 注意&#xff1a;异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行. 二、异常体系 三、异常的分类 &#xff08;一&#xff09;、编译时…

明懿金汇应对气候变化:投资于绿色未来

2023年&#xff0c;面对全球范围内的气候变化和环境保护挑战&#xff0c;明懿金汇积极响应&#xff0c;展现出其在可持续金融领域的领导力。作为一家前沿的金融科技公司&#xff0c;明懿金汇不仅将环保理念融入到其金融产品和服务中&#xff0c;更通过直接的行动和投资&#xf…

【Python】conda镜像配置,.condarc文件详解,channel镜像

1. conda 环境 安装miniconda即可&#xff0c;Miniconda 安装包可以到 http://mirrors.aliyun.com/anaconda/miniconda/ 下载。 .condarc是conda 应用程序的配置文件&#xff0c;在用户家目录&#xff08;windows&#xff1a;C:\users\username\&#xff09;&#xff0c;用于…

PHP的协程是什么?

PHP 的协程是一种轻量级的线程&#xff08;或任务&#xff09;实现&#xff0c;允许在一个进程中同时执行多个协程&#xff0c;但在任意时刻只有一个协程处于执行状态。协程可以看作是一种用户空间线程&#xff0c;由程序员显式地管理&#xff0c;而不是由操作系统内核进行调度…

用提问的方式来学习:冯·诺伊曼体系结构与操作系统OS

学习冯诺伊曼体系结构之前&#xff0c;我们要本着两个问题来学习&#xff1a; 什么是冯诺伊曼体系结构&#xff1f;为什么要有冯诺伊曼体系结构&#xff1f; 一、冯诺伊曼体系结构 1. 什么是冯诺伊曼体系结构&#xff1f; 那我们就先来回答一下什么是冯诺伊曼体系结构&#x…

Python中的TesserOCR:文字识别的全方位指南

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 文字识别在图像处理领域中起到了至关重要的作用&#xff0c;而TesserOCR&#xff08;Tesseract OCR的Python封装&#xff09;为开发者提供了一个强大的工具&#xff0c;使得文字识别变得更加便捷。本文将通过详细…

Matlab示例-Examine 16-QAM Using MATLAB学习笔记

​工作之余学习16-QAM 写在前面 网上看到许多示例&#xff0c;但一般都比较难以跑通。所以&#xff0c;还是老方法&#xff0c;先将matlab自带的例子研究下。 Examine 16-QAM Using MATLAB Examine 16-QAM Using MATLAB 或者&#xff0c;在matlab中&#xff0c;键入&#x…