作为对这个问题的回答,我想更深入地了解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) )
例如,对于这个矩形:
![original rectangle rotation](https://istack.dev59.com/Go9bn.webp)
![new rectangle rotation](https://istack.dev59.com/1atXJ.webp)
QTransform::rotate
实际上会导致顺时针旋转,而我认为我不在“widget坐标系”中——这里没有涉及任何小部件。