この質問の結果として、 QtのQTransform::rotate
機能についてもっと理解したいと思います。ドキュメントには、次のように書かれています。
QTransform&QTransform :: rotate(qreal angle、Qt :: Axis axis = Qt :: ZAxis)
座標系を指定された軸を中心に指定された角度だけ反時計回りに回転し、マトリックスへの参照を返します。
ウィジェット座標で定義されたポイントに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) )
たとえば、この長方形の場合:
ここまで回転するには:
どうしてこれなの?QTransform::rotate
私が「ウィジェット座標」にいないと信じているのに、なぜ私の呼び出しが実際に時計回りの回転を引き起こしているとドキュメントに記載されているのですか?ここにはウィジェットは含まれていません。