Qt中坐标:窗口坐标,视口坐标

在Qt中,QPainter绘图涉及物理坐标系和逻辑坐标系,其中窗口基于逻辑坐标,视口基于物理坐标。默认它们相同,可通过setWindow和setViewport进行调整。设置窗口大小为100x100,但在400x300的部件上绘制,导致20x20的矩形变为80x60。为保持正方形,需使窗口与视口对齐。QMouseEvent中的pos()返回窗口坐标,globalPos()返回显示器坐标。

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

    Qt中QPainter绘图在绘图设备上绘图的时候,会牵涉到坐标以及坐标相关的一些概念。

    对于一个给定的绘图设备(paint device,qwidget,qpixmap等),在绘图时有两个坐标系:物理坐标系,逻辑坐标系

    物理坐标系是一个真实的坐标系,在Qt中,其原点处于绘图设备的左上角,其单位长度为绘图设备上一像素长度,其X轴向右增长,Y轴向下增长。

    而逻辑坐标系是一个抽象的坐标系,其原点、单位长度没有实际意义,其X轴向右增长,Y轴向下增长。
    绘图时,图像绘制在逻辑坐标系上,再通过窗口——视口映射,世界转换将逻辑坐标系映射到物理坐标系上。进而把绘制在逻辑坐标系上的图像映射到物理坐标系上。
    窗口基于逻辑坐标系,视口基于物理坐标系。在没有做过改动的情况下,他们是一样的,都是以绘图设备大小为大小,左上角为原点(0,0)。使用以下两个函数可以修改一个基于逻辑坐标系的窗口矩形,与一个基于物理坐标系的视口矩形。
void QPainter::setWindow ( int x, int y, int width, int height ) 
void QPainter::setViewport ( int x, int y, int width, int height )

参数:
x:窗口/视口左上角x坐标      y:窗口/视口左上角y坐标
width:窗口/视口长度            height:窗口/视口高度

新建一个Qt5的窗口应用程序,基类选择QWidget,勾选ui。窗口的大小为400*300  也是Qt快速入门之中例子(10-3)

在其重绘事件中

void Widget::paintEvent(QPaintEvent *event)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值