qt QGraphicsRotation详解
1、概述
QGraphicsRotation
是 Qt 框架中 QGraphicsTransform
的一个子类,它专门用于处理图形项的旋转变换。通过 QGraphicsRotation
,你可以对 QGraphicsItem(如形状、图片等)进行旋转操作,从而创建动态和吸引人的视觉效果。QGraphicsRotation
提供了对旋转角度、旋转中心以及是否应用变换的精细控制。
2、重要方法
QGraphicsRotation
类提供了一系列方法来设置和获取旋转属性:
- angle() 和 setAngle(qreal angle):用于获取和设置旋转的角度(以度为单位)。
- origin() 和 setOrigin(const QPointF &origin):用于获取和设置旋转的中心点。
- applyTo(QTransform &transform) const:将旋转变换应用到给定的
QTransform
对象上。 - update():当旋转属性发生变化时,调用此方法以更新变换。
此外,QGraphicsRotation
还继承了一些来自 QGraphicsTransform
的方法,如 itemTransform(const QGraphicsItem *item) const
,它返回应用于给定图形项的变换。
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsRotation>
#include <QPropertyAnimation>
#include <QGraphicsRectItem>
#include <QVector3D>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建场景和视图
QGraphicsScene scene;
QGraphicsView view(&scene);
// 创建一个矩形项
QGraphicsRectItem *rect = new QGraphicsRectItem(0, 0, 100, 100);
rect->setBrush(Qt::blue);
scene.addItem(rect);
// 创建旋转变换
QGraphicsRotation *rotation = new QGraphicsRotation;
rotation->setOrigin(QVector3D(50, 50, 0)); // 设置旋转中心点为矩形中心
rect->setTransformations(QList<QGraphicsTransform*>() << rotation);
// 创建动画
QPropertyAnimation *animation = new QPropertyAnimation(rotation, "angle");
animation->setDuration(2000); // 2秒
animation->setStartValue(0);
animation->setEndValue(360);
animation->setLoopCount(-1); // 无限循环
// 显示视图并启动动画
view.resize(300, 300);
view.show();
animation->start();
return app.exec();
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!