Qt座標系統

2021-08-25 23:16:15 字數 1986 閱讀 5498

座標變換

world corrdinates

==>

window coordinates

==>

device coordinates

(邏輯座標)

世界變換

中間態座標

視窗視口變換

(物理座標)

在預設情況下,3個座標系是一致的。

世界變換

qpainter::setworldmatrixenabled

啟用、禁用世界變換

qpainter::setworldtransform

設定世界變換

qpainter::worldtransform

獲取當前

qpainter::resettransform

重置為qtransform()

4個常用的函式

qpainter::translate 平移

qpainter::scale 縮放

qpainter::rotate 旋轉

qpainter::shear 剪下

注:它們通過直接呼叫的qtransform的相應成員直接修改世界變換

void qpainter::scale(qreal sx, qreal sy)

世界變換的兩個馬甲:

qpainter::settransform

qpainter::transform

void qpainter::settransform(const qtransform &transform, bool combine )

廢棄的函式(從qt4.3開始,qtransform取代了qmatrix的位置,下列函式已不建議使用):

qpainter::setworldmatrix

qpainter::worldmatrix

...視窗視口變換

直接相關:

qpainter::setviewtransformenabled

啟用、禁用視口變換

qpainter::viewtransformenabled

返回 視口變換的狀態

qpainter::setviewport

設定視口(物理座標)

qpainter::setwindow

設定視窗(與視口是同一矩形,中間態座標)

該變換是簡單的線性變換。

復合變換

視窗視口變換和世界變換的復合:

qpainter::combinedtransform

qtransform qpainter::combinedtransform() const

典型應用:對滑鼠事件的響應中,將座標從物理座標變換成qpainter需要的邏輯座標

仿射變換、透射變換

qt4.3(包括)之前的qmatrix只支援仿射變換(affine transformation)。

平移(translation)

縮放(scale)

旋轉(rotation)

剪下(shear)

qtransform支援透射變換(perspective transformation)。

m11

m12

m13

m21

m22

m23

m31dx

m32dy

m33

變換關係:

x' = m11*x + m21*y + dx

y' = m22*y + m12*x + dy

if (is not affine)

射影幾何學、仿射幾何學、微分幾何學

參考

Qt 座標系統

1 move 移動位置 對於父視窗 主視窗 座標系統相對於螢幕 原點 相對於螢幕左上角 x 往右遞增 y 往下遞增 move 100,100 座標相對於螢幕 子視窗,座標系統相對于父視窗 原點 相對於視窗空白區域左上角 不包括邊框 x 往右遞增 y 往下遞增 qpushbutton b1 new q...

Qt座標系統

座標變換 world corrdinates window coordinates device coordinates 邏輯座標 世界變換 中間態座標 視窗視口變換 物理座標 在預設情況下,3個座標系是一致的。世界變換 qpainter setworldmatrixenabled 啟用 禁用世界變...

Qt 座標系統

以螢幕的左上角為原點即 0,0 點,從左向右為x軸正向,從上向下為y軸正向,這整個螢幕的座標系統就用來定位頂層視窗 此外,視窗內部也有自己的座標系統,它依然以左上角作為原點,從左向右為x軸正向,從上向下為y軸正向,原點 x軸 y軸圍成的區域叫做client area 客戶區 在客戶區的周圍則是標題欄...