world corrdinates
==>
window coordinates
==>
device coordinates
(邏輯座標)
世界變換
中間態座標
視窗視口變換
(物理座標)
在預設情況下,3個座標系是一致的。
qpainter::setworldmatrixenabled
啟用、禁用世界變換
qpainter::setworldtransform
設定世界變換
qpainter::worldtransform
獲取當前
qpainter::resettransform
重置為 qtransform()
4個常用的函式
注:它們通過直接呼叫的 qtransform 的相應成員直接修改世界變換
voidqpainter::scale(qreal
sx, qreal
sy)
世界變換的兩個馬甲:
voidqpainter::settransform(const
qtransform &transform, bool
combine )
廢棄的函式(從qt4.3開始,qtransform 取代了qmatrix 的位置,下列函式已不建議使用):
直接相關:
qpainter::setviewtransformenabled
啟用、禁用 視口變換
qpainter::viewtransformenabled
qpainter::setviewport
設定 視口(物理座標)
qpainter::setwindow
設定 視窗(與視口是同一矩形,中間態座標)
該變換是簡單的線性變換。
視窗視口變換和世界變換的復合:
qtransformqpainter::combinedtransform() const
典型應用:對滑鼠事件的響應中,將座標從物理座標變換成qpainter需要的邏輯座標
qt4.3(包括)之前的 qmatrix 只支援仿射變換(affine transformation)。
qtransform 支援透射變換(perspective transformation)。
m11m12
m13m21
m22m23
m31
dxm32
dym33
變換關係:
x' = m11*x + m21*y + dxy' = 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 啟用 禁用世界變...