当前位置: 首页 > news >正文

QGraphics View坐标系

QGraphics View绘图结构依赖三个类:QGraphicsScene,QGraphicsView,QGraphicsItem。

这三者的关系在前面已经介绍过:Graphics View 绘图架构-CSDN博客

这里介绍下这三者的坐标系,以及如何相互转换。


 

1. QGraphicsScene 坐标系

描述QGraphicsScene 使用的是场景坐标系,这是一个笛卡尔坐标系,其中 (0, 0) 通常是场景的左上角。

用途: 用于确定图形项在场景中的位置。

范围: 场景坐标系可以非常大,支持大量的图形项。

2. QGraphicsView 坐标系

描述QGraphicsView 使用的是视图坐标系,这也是一个笛卡尔坐标系,其中 (0, 0) 通常是视图的左上角。

用途: 用于确定用户在视图中的操作位置,如鼠标点击、拖动等。

范围: 视图坐标系通常与视图的大小一致,但可以通过缩放和平移操作改变。

3. QGraphicsItem 坐标系

描述QGraphicsItem 使用的是本地坐标系,其中 (0, 0) 通常是图形项的局部原点。这个原点的具体位置取决于图形项的类型和构造方式。以下是一些常见图形项的默认原点位置:

  • QGraphicsRectItem(0, 0, 100, 100); // 创建的矩形,其左上角在 (0, 0),右下角在 (100, 100)。
  • QGraphicsEllipseItem(0, 0, 100, 100); // 创建的椭圆,其左上角在 (0, 0),右下角在 (100, 100)。
  • QGraphicsPolygonItem;  // (0, 0) 是多边形的第一个顶点。
  • QGraphicsPathItem;  // (0, 0) 是路径的起始点。
  • 自定义QGraphicsItem,对于自定义的 QGraphicsItem,(0, 0) 的位置完全由你在重写的 boundingRect 和 paint 方法中定义。

用途: 用于确定图形项内部的细节,如子项的位置、形状等。

范围: 本地坐标系通常与图形项的大小一致,但可以有更复杂的变换(如旋转、缩放)。

4. 三者坐标之间的相互转换

鼠标事件的传递方向是:视图view -> 场景scene -> 图元item。详情可参考之前的博文 Graphics View 绘图架构-CSDN博客

所以这里将关注的转换路径:视图view坐标 -> 场景scene坐标 -> 图元item坐标

这些坐标的变换都是通过两端对象的方法控制,要么是view对象,要么是item对象。

4.1 视图坐标和场景坐标

通过view控制

(1)视图坐标 -> 场景坐标系: QPointF scenePos = view->mapToScene(viewPos);wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

(2)场景坐标 -> 视图坐标系: QPoint viewPos = view->mapFromScene(scenePos);

4.2 场景坐标系和图形项坐标

通过item控制

(1)场景坐标 -> 图形项的本地坐标系:QPointF itemPos = item->mapFromScene(scenePos);

(2)图形项的本地坐标 -> 场景坐标系: QPointF scenePos = item->mapToScene(itemPos); 

4.3 视图坐标和图形项坐标

中间都要经过场景坐标。

(1)视图坐标 -> 图形项的本地坐标系:

QPointF scenePos = view->mapToScene(viewPos);
QPointF itemPos = item->mapFromScene(scenePos);

(2)图形项的本地坐标 -> 视图坐标系

QPointF scenePos = item->mapToScene(itemPos);
QPoint viewPos = view->mapFromScene(scenePos);

相关文章:

QGraphics View坐标系

QGraphics View绘图结构依赖三个类:QGraphicsScene,QGraphicsView,QGraphicsItem。 这三者的关系在前面已经介绍过:Graphics View 绘图架构-CSDN博客 这里介绍下这三者的坐标系,以及如何相互转换。 1. QGraphicsScen…...

繁星之下--

在一个宁静的小镇上,年轻的画家阿宁用她的画笔捕捉着四季的变换。这个小镇四季分明,春天的嫩芽、夏天的繁花、秋天的金黄和冬天的白雪,仿佛每一个季节都在向她诉说着自己的故事。阿宁常常在思考,如何将这些美丽的瞬间转化为永恒的…...

Transformer+KAN系列时间序列预测代码

前段时间,来自 MIT 等机构的研究者提出了一种非常有潜力的替代方法 ——KAN。该方法在准确性和可解释性方面表现优于 MLP。而且,它能以非常少的参数量胜过以更大参数量运行的 MLP。 KAN的发布,引起了AI社区大量的关注与讨论,同时…...

vue项目安装组件失败解决方法

1.vue项目 npm install 失败 删除node_modules文件夹、package-lock.json 关掉安装对话框 重新打开对话框 npm install...

C++ [项目] 躺平发育

一、基本介绍 支持Dev-C5.11版本(务必调为英文输入法),基本操作看游戏里的介绍,怎么做的……懒得说,能看懂就看注释,没有的自己猜,如果你很固执……私我吧 二、代码部分 #include<bits/stdc.h> #include<windows.h> #include<unistd.h> using namespace st…...

[产品管理-55]:产品设计不仅仅完成功能,即可用性设计,还需要完成可生产性、可装配性、可维护性、可回收性、可服务性设计

目录 可用性设计&#xff1a; 可生产性设计&#xff1a; 可装配性设计&#xff1a; 可维护性设计&#xff1a; 可回收性设计&#xff1a; 可服务性设计&#xff1a; 产品设计是一个综合性的过程&#xff0c;它不仅仅局限于完成产品的基本功能&#xff0c;即可用性设计&am…...

Mount Image Pro,在取证安全的环境中挂载和访问镜像文件内容

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 天津鸿萌科贸发展有限公司是 GetData 公司数据恢复与取证工…...

玩转Docker | Docker基础入门与常用命令指南

玩转Docker | Docker基础入门与常用命令指南 引言基本概念help帮助信息常用命令管理镜像运行容器构建镜像其他Docker命令整理结语引言 Docker 是一种开源的应用容器引擎,它允许开发者将应用程序及其依赖打包进一个可移植的容器中,然后发布到任何流行的 Linux 机器上。这大大简…...

【MySQL】MySQL安装以及各种报错处理

前言&#xff1a; 本节内容讲述在Ubuntu环境下怎么进行MySQL的安装。 以及一些安装过程中遇到的报错如何处理的问题。 ps:注意&#xff0c; 本篇文章不是图形化界面的MySQL安装教程哦。想要安装图形化界面的MySQL的友友们可以另寻资源了。 目录 更新软件包列表 安装M…...

【传知代码】图像处理解决种子计数方法

文章目录 一、背景及意义介绍研究背景农业考种需求传统计数方法的局限性人工计数仪器设备计数 研究意义提高育种效率提高计数准确性广泛的适用性数据存档与分析便利 二、概述三、材料与数据准备以及方法介绍整体流程图像采集图像预处理形态学操作腐蚀运算开运算 图像二值化种子…...

WPF 特性------Binding

工业控制中&#xff0c;经常会需要把一个bool 型输入信号的状态显示在面板上&#xff0c;使用wpf 绑定的办法&#xff0c;可简洁实现&#xff1a; 实现步骤&#xff1a; 1&#xff0c;定义类&#xff1a; using System; using System.Collections.Generic; using System.Com…...

深入解析 FastAPI 查询参数:配置、类型转换与灵活组合

深入解析 FastAPI 查询参数&#xff1a;配置、类型转换与灵活组合 本文全面解析了 FastAPI 查询参数的使用方法&#xff0c;包括配置默认值、设为可选或必选参数、类型转换以及组合使用等实用技巧。通过查询参数&#xff0c;开发者可以在路径操作函数中接收动态输入&#xff0…...

大学城水电管理系统开发:Spring Boot指南

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

Lua 从基础入门到精通(非常详细)

目录 什么是 Lua&#xff1f; Lua 环境安装 Lua基本语法 注释 数据类型 nil&#xff08;空&#xff09; Boolean number&#xff08;数字&#xff09; string&#xff08;字符串&#xff09; function&#xff08;函数&#xff09; userdata thread table&#xff…...

[MySQL#11] 索引底层(2) | B+树 | 索引的CURD | 全文索引

目录 1.B树的特点 索引结构 复盘 其他数据结构的对比 B树与B树总结 聚簇索引与非聚簇索引 辅助索引 2. 索引操作 主键索引 1. 创建主键索引 第一种方式 第二种方式 第三种方式 2. 查询索引 第一种方法 第二种方法 第三种方法 3. 删除索引 删除主键索引 删除…...

一个指针可以被声明为 `volatile`

一个指针可以被声明为 volatile。当指针被声明为 volatile 时&#xff0c;指针本身的地址值可能会在程序之外的控制下发生变化&#xff0c;这意味着编译器在使用该指针时必须每次都重新从内存中读取它的地址&#xff0c;而不能假设指针的地址保持不变。 为什么指针可以是 vola…...

[0260].第25节:锁的不同角度分类

MySQL学习大纲 我的数据库学习大纲 从不同维度对锁的分类&#xff1a; 1.对数据操作的类型划分:读锁和写锁 1.1.读锁 与 写锁概述&#xff1a; 1.对于数据库中并发事务的读-读情况并不会引起什么问题。对于写-写、读-写或写-读这些情况可能会引起一些问题&#xff0c;需要使用…...

android数组控件Textview

说明&#xff1a;android循环控件&#xff0c;注册和显示内容 效果图&#xff1a; step1: E:\projectgood\resget\demozz\IosDialogDemo-main\app\src\main\java\com\example\iosdialogdemo\TimerActivity.java package com.example.iosdialogdemo;import android.os.Bundl…...

openpnp - 手工修改配置文件(元件高度,size,吸嘴)

文章目录 openpnp - 手工修改配置文件(元件高度,size,吸嘴)概述笔记parts.xmlpackages.xml 手工将已经存在的NT1,NT2拷贝出来改名备注END openpnp - 手工修改配置文件(元件高度,size,吸嘴) 概述 载入新板子贴片准备时&#xff0c;除了引入Named CSV文件&#xff0c;还要在ope…...

Java 集合一口气讲完!(中)d=====( ̄▽ ̄*)b

Java 队列 Java集合教程 - Java队列 队列是只能在其上执行操作的对象的集合两端的队列。 队列有两个末端&#xff0c;称为头和尾。 在简单队列中&#xff0c;对象被添加到尾部并从头部删除并首先删除首先添加的对象。 Java Collections Framework支持以下类型的队列。 简单…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...