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
注:它们通过直接调用的