QML 动画和效果

QML animations and effects

假设我们有箭头图像,如下所示:

但我们想用这张图片制作动画:


问题

这个不太优雅的动画是由一组不同的箭头图像创建的。 但我想通过 q​​ml 制作相同的动画。你知道任何组件(最好是 qml,但如果你不知道,你可以告诉我 qt 类),我可以用它来帮助我达到那个目的? 另一个问题是,从性能的角度来看,搜索任何方法来实现它而不是将图像集组合成 gif 格式是否有意义?


根据箭头有背景的新信息更新。

您需要将箭头裁剪成具有透明背景的图像文件,并将背景作为单独的图像。

从那里,您可以使用与下面类似的概念,但箭头在增长。我相信您将能够找到一种垂直适合图像而不会水平操纵图像的图像模式。我将从尝试 fillMode: Image.TileHorizontally 开始。

将其视为伪代码,我目前无法访问计算机运行。

Image
{
   id: backgroundImage
   source: "background.png"
   Image
   {
      id: arrowWithTransparentBackground
      fillMode: Image.TileHorizontally
      source: "arrow.png"
      anchors.left: parent.left
      anchors.top: parent.top
      anchors.bottom: parent.bottom
          SequentialAnimation on width {
              loops: Animation.Infinite
              PropertyAnimation { from 0: to: parent.width }
          }
   }
}

参考旧答案,之前不知道图片有背景:

QML 非常适合大小变化动画。你可以很容易地在你的图像顶部有一个矩形锚定到左侧,它是白色的并且从 0 增长到 arrow.width。

将其视为伪代码,我目前无法访问计算机运行。

Image
{
   id: arrowImage
   source: "arrow.png"
   Rectangle
   {
      color: "white"
      anchors.left: parent.left
      anchors.top: parent.top
      anchors.bottom: parent.bottom
          SequentialAnimation on width {
              loops: Animation.Infinite
              PropertyAnimation { from 0: to: parent.width }
          }
   }
}