【发布时间】:2012-04-28 21:02:08
【问题描述】:
由于this question,我想更多地了解Qt 的QTransform::rotate 函数。 In the documentation,上面写着:
QTransform & QTransform::rotate (qreal angle, Qt::Axis axis = Qt::ZAxis)
将坐标系绕指定轴逆时针旋转给定角度,并返回对矩阵的引用。
请注意,如果您将 QTransform 应用于在小部件坐标中定义的点,则旋转方向将是顺时针方向,因为 y 轴指向下方。
角度以度为单位。
从我之前的问题中,我了解到要顺时针旋转QPolygonF,我必须根据rotate 函数将它逆时针旋转90 度:
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 的调用实际上会导致顺时针旋转 - 这里不涉及任何小部件。
【问题讨论】:
标签: c++ qt rotation coordinates