理解了一些概念也就理解了这两个函数
看的见的物理坐标:即创建的Widget中的坐标,左上角为原点(0,0),宽和高就是Widget的宽和高
看不见的逻辑坐标:QPainter是在看不见的逻辑坐标中进行绘图的
在不调用setWindow和setViewport的时候物理坐标和逻辑坐标是一样的

setWindow将逻辑坐标的哪一部分区域拿出来映射到物理坐标,其中的参数矩形区域是对于逻辑坐标来说的
在不调用setViewport的情况下该矩形区域会映射到整个Widget区域,并且会同比例的进行缩放,比如Widget的高为400宽为400,setWindow设置的矩形区域的高为200,宽为200,那么逻辑区域会被放大

以上Widget的宽高为(550,440),setWindow将逻辑坐标的(100,100,200,200)的区域映射到了Widget的整个区域,drawRect画的第一个矩形区域是(100,100,200,200)也即setWindow设置的逻辑区域,那么该矩形就会是整个Widget区域。
setViewport是将逻辑坐标映射到物理坐标的哪个区域,指定的区域是相对于Widget来说的

逻辑坐标上宽200高200的矩形,被映射到物理坐标宽100高100的区域了。
所以从逻辑坐标到物理坐标的映射,会发生缩放
这篇博客介绍了Qt中物理坐标和逻辑坐标的概念,以及setWindow和setViewport函数如何影响两者之间的映射。通过示例解释了如何在不同比例下进行坐标映射和缩放,帮助读者深入理解Qt绘图机制。
615

被折叠的 条评论
为什么被折叠?



