由於this question,我想了解更多關於Qt的QTransform::rotate
函數。 In the documentation,它說:瞭解Qt的QTransform旋轉功能
QTransform & QTransform ::旋轉(QREAL角度,Qt的::軸軸線= Qt的:: Z軸)
由關於指定的軸線的給定角度逆時針旋轉的座標系和返回對矩陣的引用。
請注意,如果您將QTransform應用於小部件座標中定義的點,則由於y軸向下,因此旋轉方向將爲順時針方向。
角度以度數指定。
從我剛纔的問題,我瞭解到,以順時針QPolygonF
旋轉,我必須實際旋轉90度逆時針,根據rotate
功能:
QPolygonF original = QPolygonF() << QPoint(0, 1) << QPoint(4, 1) << QPoint(4, 2) << QPoint(0, 2);
QTransform transform = QTransform().translate(2, 2).rotate(90).translate(-2, -2);
QPolygonF rotated = transform.map(original);
qDebug() << rotated;
輸出:
QPolygonF(QPointF(3, 0) QPointF(3, 4) QPointF(2, 4) QPointF(2, 0))
Eg這個矩形:
要旋轉到這裏:
這是爲什麼?爲什麼該文檔說我調用QTransform::rotate
實際上是在我相信我不在「小部件座標」中時導致順時針旋轉 - 這裏沒有涉及小部件。
謝謝斯蒂芬,這解釋了它。 – Mitch 2012-04-18 00:40:29