在 Qt 中,QPainter::rotate()
方法用于旋转绘图的内容,其参数是一个角度值,单位为度。对于这个角度值,正负符号具有特定的含义:
正值:表示顺时针旋转。例如,
painter.rotate(45);
表示将坐标系顺时针旋转 45 度。负值:表示逆时针旋转。例如,
painter.rotate(-45);
表示将坐标系逆时针旋转 45 度。
示例
以下是一个简单的例子展示了正负方向的效果:
#include <QApplication>
#include <QWidget>
#include <QPainter>
class MyWidget : public QWidget {
protected:
void paintEvent(QPaintEvent *) override {
QPainter painter(this);
// 设置背景颜色
painter.setBrush(Qt::white);
painter.drawRect(0, 0, width(), height());
// 移动画笔到中心点
painter.translate(width() / 2, height() / 2);
// 顺时针旋转
painter.setBrush(Qt::blue);
painter.rotate(45); // 顺时针旋转45度
painter.drawRect(-50, -25, 100, 50); // 绘制矩形
// 重置变换以绘制第二个矩形
painter.resetTransform();
// 移动到中心点并逆时针旋转
painter.translate(width() / 2, height() / 2);
painter.setBrush(Qt::red);
painter.rotate(-45); // 逆时针旋转45度
painter.drawRect(-50, -25, 100, 50); // 绘制另一个矩形
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyWidget w;
w.resize(400, 300);
w.show();
return app.exec();
}
在这个例子中,我们首先绘制了一个顺时针旋转的蓝色矩形,然后重置变换后再绘制了一个逆时针旋转的红色矩形。通过这种方式,可以清楚地观察到正向和负向旋转对图形位置的影响。
内容由零声教学AI助手提供,问题来源于学员提问