QT 坐标系统理解

本文介绍了QT中2D绘图时遇到的坐标系统问题,包括逻辑坐标系、窗口、设备坐标系和视口的关系。通过概念解析和代码示例,帮助读者理解QT绘图中的坐标转换,涉及窗口和视口的设置、坐标值的互换、转换成逻辑坐标、精度控制以及绘图速度优化等关键点。
摘要由CSDN通过智能技术生成

这几天学习QT的2D绘图,可因为坐标系统把我拦住了。不但资料少,而且这些资料都是内容雷同。本来这是件非常简单的事情,却有种越描越黑的感觉。经过几天的折腾,总算是理解了这层关系。现在总结一下,不要让大家再走冤枉路。

一、我们为什么要有两种坐标系统?

谈到QT绘图都会跟你说到好几个坐标系,然后就开始被绕晕了。那为什么会这么啰嗦呢?我们换个角度来想一下我们要在屏幕上显示一个图形,程序需要知道哪些东西?

首先你得有一个具体的可描述尺寸的对象,比如现在有一个手机150x50mm,或者一个图片800x600像素,又或者一个房子占地30x6米。这是具体的,与显示设备无关的单位。描述这些内容的坐标系称为逻辑坐标系。因为眼睛看不来那么多东西,所以你还会有一个特别关注的地方,比如说一幅上百米的清明上河图,你要是拉远了就可以看到全部,拉近了就只能看到几个人的画像。描述你需要关注的这个部分矩形就是窗口,决定了你需要显示的内容。

接下来是显示器,这是一个以像素为基本单位进行描述的设备。比如说1024x768分辨率的显示器,或者说一个100x200像素的QWidget。那么描述这种环境的坐标系就是物理坐标系。要正确显示的话,程序需要知道的也是两个方面的东西,你在设备环境的什么地方,以多大的范围给你显示出来。

先看一会图,再来扯具体的概念性的东西~~ 

二、概念理解

1、逻辑坐标与窗口

逻辑坐标:现实工作中作用的坐标系统称为逻辑坐标,使用的单位称为逻辑单位。比如说一个手机尺寸150*50mm。该系统是与显示设备无关的。比如我们常见的Y轴向上的数学坐标系。
窗口:逻辑环境中的一小部分,是一个矩形框,使用逻辑单位。可以理解为需要显示在屏幕上的显示范围。比如说一部手机,我要放大只看手机屏幕那一部分,那么手机屏幕这个部分就是窗口。如果我要缩小看放手机的桌子,那桌子范围就是窗口。可理解为需要展示的内容。

2、设备环境与视口

设备坐标:显示器、打印机,具体的显示控件等等为设备环境。为了便于理解,以下可用QWidget指代设备环境。它的坐标系为设备坐标系(或物理坐标系)。显示器以像素为单位,打印机以点为单位。原点在左上角,正X轴向右,正Y轴向下,固定不变,不可修改!其X、Y的负半轴为虚设,超出设备的部分无法显示或无法打印图形。不管最终的转换结果如何,最后图形还是要转换成屏幕上最终的像素点上。利用QT的方法取得的坐标值一般就是这个。比如QWidget内部的任一点有它位于QWidget左上角的相对坐标位置和位于整个屏幕的绝对坐标位置。利用鼠标的事件event->pos()得到的坐标值是在QWidget内的相对坐标位置,而event->globalP

  • 54
    点赞
  • 174
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值