博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt中的viewport与window
阅读量:6715 次
发布时间:2019-06-25

本文共 814 字,大约阅读时间需要 2 分钟。

hot3.png

前提:讲述QPainter绘制、无其他变换。

viewport默认是整个paint device窗口,对QWidget来说就是整个QWidget窗口。

window永远是与viewport全等的矩形。

setViewport的作用是在paint device上圈定一个矩形(以device坐标),用来作为window的参照。除了作为window的参照,viewport这个概念基本上没什么作 用。那viewport作为window的参照是什么意思呢?刚才说了,window永远与viewport全等,当圈定viewport 时,window实际上物理尺寸和位置就固定了。那window()函数返回的QRect表示什么意思呢?实际上window是个逻辑概念,可以想象为 paint device表面有一张透明的平面,在这个透明平面上要建立一个二维直角坐标系,那原点如何取,单位刻度如何取?答案是setWindow(rc)。原理是:圈定的viewport与透明平面上有一个矩形(就是window啦)重合,这个在透明平面上的矩形在透明平面上的坐标就是rc给出的,这时候,就相当于我们在透明平面上确确实实也圈定了一个矩形,四个点坐标都有了(rc给出的),这样就能推导出这个透明平面上的坐标系的原点和单位刻度。后续的QPainter.drawXXX系列函数给出的坐标,都是指这个透明平面上的坐标系中的坐标,即window坐标系里的坐标。

理解了这一点。灵活setViewport和setWindow就能实现缩放,平移翻转啥的效果。

//

Qt的Graphics View框架中,场景坐标对应QPainter的逻辑坐标,也就是场景就是window的概念,视图坐标和设备坐标相同。因此,setWindow在这里就对应setSceneRect

转载于:https://my.oschina.net/zhoubaojing/blog/363043

你可能感兴趣的文章
张家口a货翡翠,梧州a货翡翠
查看>>
JS Object的静态方法汇总( 上 )
查看>>
到手机里面去点击信任就行了。每次都是这样出错。
查看>>
java B2B2C Springcloud多租户电子商城系统-Eureka服务端与客户端常用配置
查看>>
(十一)java版b2b2c社交电商spring cloud分布式微服务-docker部署spring cloud项目
查看>>
jvm疯狂吞占内存,罪魁祸首是谁?
查看>>
表格存储Tablestore权威指南(持续更新)
查看>>
java B2B2C源码电子商城系统-Kafka快速入门
查看>>
Spring Cloud云服务 - HongHu架构common-service 项目构建过程
查看>>
hadoop中hive原理及安装
查看>>
pear默认安装后一个小bug
查看>>
我的友情链接
查看>>
nginx-通过Nginx统计当前每个域名流量
查看>>
家庭电路 功率和负荷
查看>>
SECURITY-Dockerfile写法
查看>>
openGL坐标系
查看>>
vim
查看>>
Intelij idea 不能解析jsp内置对象
查看>>
C中调用C++函数
查看>>
spring boot 1.5.4 之web开发(三)
查看>>