Qt 座標系統 筆記

2021-06-03 01:14:23 字數 1450 閱讀 5424

world corrdinates

==>

window coordinates

==>

device coordinates

(邏輯座標)

世界變換

中間態座標

視窗視口變換

(物理座標)

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

qpainter::setworldmatrixenabled

啟用、禁用世界變換

qpainter::setworldtransform

設定世界變換

qpainter::worldtransform

獲取當前

qpainter::resettransform

重置為 qtransform()

4個常用的函式

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

void

qpainter::scale(qreal

sx, qreal

sy)

世界變換的兩個馬甲:

void

qpainter::settransform(const

qtransform &transform, bool

combine )

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

直接相關:

qpainter::setviewtransformenabled

啟用、禁用 視口變換

qpainter::viewtransformenabled

qpainter::setviewport

設定 視口(物理座標)

qpainter::setwindow

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

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

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

qtransform

qpainter::combinedtransform() const

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

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

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

m11m12

m13m21

m22m23

m31

dxm32

dym33

變換關係:

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座標系統

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