qt 调用qpainter_QT 利用QPainter绘图的坐标系转换

Qt绘制图形时,少不了坐标计算,那么如何更好更快地计算出坐标呢?现在来分析一下。

如下图所示,原来坐标系是(0,0)X axis右Y axis下

现在想把它变成,坐标在窗口中间,X右,Y上,标准的数学中的坐标系。

Painter.setWindow(x,y,width().height());

用setWindow这个函数,表示什么意思。前两个参数左上角位置,后两个参数宽高。

这个是原本的坐标系,要把他变成下面这个

怎么算呢,可以把变换好的坐标系在纸上画出来,左上角坐标传给前两个参数,后两个参数宽高可以算出来。

Width= 50-(-50) = 100;

Height = -50-50 = -100;

那么就是painter.setWindow(-50,50,100,-100);

一般painter.setWindow(-width()/2,height()/2,width(),-height());就可以达到目的了

World Corrdinates

===>

Window Coordinates

===>

Device Coordinates

(逻辑坐标)

世界变换

中间态坐标

窗口视口变换

(物理坐标)

在默认情况下,3个坐标系是一致的。

世界变换

世界变换直接相关的函数:

Qpainter::setWorldMatrixEnabled

启用,禁用世界变换

Qpainter:;setWorldTransform

设置世界变换

Qpainter::worldTransform

获取当前

Qpainter::resetTransform

重置Qtransform()

4个常用的函数:Qpainter::scale Qpainter::shear Qpainter::rotate Qpainter::translate

注:它们通过直接调用的

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值