• 创建一个 QGraphicsScene 对象,并将其设置为 QGraphicsView 的场景。

  • 在场景中添加一个 QGraphicsPixmapItem 对象,该对象用于显示要移动和缩小的图片。

  • 使用 QPropertyAnimation 对象来控制图像在时间上的移动和缩放。可以通过调整属性值来达到所需效果,比如位置、大小等。

  • 在动画开始时设置 QGraphicsPixmapItem 的初始位置和大小,并在结束时设置最终位置和大小。同时,在每一帧更新时都要重新计算当前位置和大小并进行相应的更新操作。

  • 将 QPropertyAnimation 对象连接到 QGraphicsPixmapItem 上,以便它可以根据动画进度自动更新图像属性。

  • 最后启动动画并等待完成即可。

  • 下面是一个简单示例代码供参考:

    #include <QGraphicsScene>
    #include <QGraphicsView>
    #include <QGraphicsPixmapItem>
    #include <QPropertyAnimation>
    int main(int argc, char *argv[])
        QApplication a(argc, argv);
        // 创建场景和视图
        QGraphicsScene scene;
        QGraphicsView view(&scene);
        // 添加图片项
        QPixmap pixmap("image.png");
        QGraphicsPixmapItem item(pixmap);
        scene.addItem(&item);
        // 设置起始状态
        item.setPos(0, 0);
        item.setScale(1.0);
        // 创建动画
        QPropertyAnimation animation(&item, "pos");
        // 设置动画属性
        animation.setDuration(1000);  // 持续时间
        animation.setStartValue(QPointF(0, 0));  // 起始位置
        animation.setEndValue(QPointF(200, 200));  // 结束位置
        // 创建大小变化动画
        QPropertyAnimation scaleAnimation(&item, "scale");
        // 设置缩放属性,根据动画进度更新缩放值
        scaleAnimation.setKeyValueAt(0.0, QPointF(1.0, 1.0));
        scaleAnimation.setKeyValueAt(1.0, QPointF(0.5, 0.5));
        // 添加到组合动画中,同时运行两个动画
        QParallelAnimationGroup group;
        group.addAnimation(&animation);
        group.addAnimation(&scaleAnimation);
        group.start();  // 启动动画
        view.show();
         return a.exec();
                        

    本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=1491