第八章 坐标系统变换

该博客主要讲解了在Qt环境中如何使用QPainter进行图形绘制,并深入探讨了坐标系统的变换,包括如何调整坐标轴、缩放和旋转等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、使用QPainter绘图

http://blog.youkuaiyun.com/hellozex/article/details/78361311


二、坐标系统变换

    在QPainter的默认坐标系中,点(0,0)位于坐标绘制设备的左上角,x坐标向右,y坐标向下,类似图像处理中的图像像素排列,默认每个像素占用1*1大小的区域。
    理论上,像素的中心取决于版像素坐标哦。例如,窗口部件的左上角像素覆盖了点(0,0)到点(1,1)的区域,它的中心在(0.5,0.5)位置。如果告诉QPainter绘制一个像素,例如(100,100),它会相应地在两个方向做+0.5的偏移,使得像素点的中心位置在(100.5,100.5)。这一差别初看起来理论性很强但是在实践中却是非常重要。首先,只有当反走样无效时才偏移+0.5;如果反走样有效,并且我们试图在(100,100)绘制一个黑色像素,实际上QPainter会在(99.5,99.5)、(99.5,100.5)、(100.5,99.5)、(100.5,100.5)四个像素着浅灰色,给人的印象就是正好位于四个点的交点处,如果不需要这种效果,可以通过指定半像素坐标或者通过便宜QPainter(+0.5,+0.5)来避免这种效果的出现。


    这种窗口-视口机制对于编写独立于绘制设备大小和分辨率的绘制代码很有用的。例如,如果想让逻辑坐标从(-50,-50)到(+50,+50),并且(0,0)在中间,可以这样设置窗口:
painter.setWindow(-50, -50, 100, 100);
前面参数指定原点,后面是宽和高;这就意味着逻辑坐标(-50,-50)对应物理坐标(0,0),而逻辑坐标(+50,+50)对应物理坐标(320,200),如图:

    世界变换实在窗口-视口转换之外使用的变换矩阵。它允许使用移动、缩放、旋转或者拉伸绘制的项。例如,想要45°角绘制文本,他可以使用这段代码:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值