首页 > 其他分享 >Qml 实现水波进度动画条

Qml 实现水波进度动画条

时间:2024-09-13 20:22:59浏览次数:13  
标签:动画 圆角 root 裁剪 radius Qml 水波

【写在前面】

最近看到一个非常有趣的动画效果:水波进度动画。

学习了一下实现思路,觉得很有意思。

不过原版是 HTML + CSS,我这里用的是 Qml,有一些小技巧,分享给大家~


【正文开始】

老样子,先来看看效果图:

WaveProgress.gif

最基础的无非就是四个部分:

1、圆形水缸

2、水波

3、百分比数字

4、进度条

水波效果最重点的就是水波,其实这个水波就是个障眼法罢了,画张图你们就明白了。

它就是一个圆角正方形,一直在旋转和上升下降,让用户有一种水波的视觉感~

image.png

当然,我们还需要将多余的部分裁剪掉,因此这里需要借助 OpacityMask

image.png

OpacityMask 原理是将 Source 对应 MaskSource 中的透明部分掩盖掉。

但我们不能直接透出 Source 部分 ( 蓝色圆角矩形 ),需要将它先下移,然后裁剪得到:

image.png

接着,使用一个圆形作为 MaskSource 即可裁剪出下面的形状:

image.png

最后,让蓝色圆角矩形无限旋转即可:

    Item {
        id: wave
        clip: true
        anchors.fill: parent
        visible: false

        Rectangle {
            y: mask.height * 1.1 * (1 - root.value)
            width: root.radius * 4
            height: root.radius * 4
            anchors.horizontalCenter: parent.horizontalCenter
            radius: root.radius * 1.5
            color: root.waveColor
            rotation: 45

            NumberAnimation on rotation {
                from: 0
                to: 360
                running: root.value < 1.0
                duration: root.waveSpeed * 1000
                loops: NumberAnimation.Infinite
            }
        }
    }

至于进度条和文字就非常简单,直接看源码即可。


【结语】

最后:项目链接(多多star呀..⭐_⭐):

Github 地址:https://github.com/mengps/QmlControls/tree/master/WaveProgress

标签:动画,圆角,root,裁剪,radius,Qml,水波
From: https://blog.51cto.com/u_13184717/12008071

相关文章

  • Qml 实现水波进度动画条
    【写在前面】最近看到一个非常有趣的动画效果:水波进度动画。学习了一下实现思路,觉得很有意思。不过原版是HTML+CSS,我这里用的是Qml,有一些小技巧,分享给大家~【正文开始】老样子,先来看看效果图:最基础的无非就是四个部分:1、圆形水缸2、水波3、百分比数字4、进度条水......
  • WPF 实现一个吃豆豆的Loading加载动画
    运行的效果如下 先引入一下我们需要的库在nuget上面搜一下"expression.Drawing",安装一下这个包 我们再创建一个Window,引入一下这个包的命名空间我们设置一下这个加载动画呈现的窗体的样式xmlns:ed="http://schemas.microsoft.com/expression/2010/drawing"......
  • 前端three.js的Sprite模拟下雨动画效果
    一、效果如图所示:二、原理三、完整代码:index.jsimport*asTHREEfrom'three';import{  OrbitControls}from'three/addons/controls/OrbitControls.js';importmodelfrom'./model.js';......
  • 前端three.js的Sprite模拟下雪动画效果
     一、效果如图所示:二、原理同下雨一样三、完整代码:index.jsimport*asTHREEfrom'three';import{  OrbitControls}from'three/addons/controls/OrbitControls.js';importmodelfrom'./model.js';//模型对象//场景constscene=newTHREE.Scene();......
  • Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)
    【写在前面】经常接触前端的朋友应该经常见到下面的控件:在前端中一般称它为Notification或 Message,但本质是一种东西,即:悬浮弹出式的消息提醒框。这种组件一般具有以下特点:1、全局/局部显示:它不依赖于具体的页面元素,可以在整个页面的任意位置显示。2、自动消失:默认情况下,......
  • Qml 实现仿前端的 Notification (悬浮出现页面上的通知消息)
    【写在前面】经常接触前端的朋友应该经常见到下面的控件:在前端中一般称它为Notification或 Message,但本质是一种东西,即:悬浮弹出式的消息提醒框。这种组件一般具有以下特点:1、全局/局部显示:它不依赖于具体的页面元素,可以在整个页面的任意位置显示。2、自动消失:默认情况下......
  • VRAY云渲染动画怎么都是图片?
    动画实际上是由一系列连续的静态图像(帧)组成的,当这些帧快速连续播放时,就形成了动画效果。每一帧都是一个单独的图片,需要单独渲染。云渲染农场的工作方式:1、用户将3D场景文件和动画设置上传到云渲染农场。2、云渲染农场的服务器会对动画的每一帧进行渲染,生成单帧图片。3、这些......
  • Qml 实现瀑布流布局
     【写在前面】最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着Qml有没有类似实现。结果百度了一圈也没有(T_TQml凉了凉了),于是,我按照自己理解,简单实现了一个Qml版的瀑布流布局。关于瀑布流:瀑布流布局(WaterfallLayout),也被称为瀑......
  • Qml 实现瀑布流布局
    【写在前面】最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着Qml有没有类似实现。结果百度了一圈也没有(T_TQml凉了凉了),于是,我按照自己理解,简单实现了一个Qml版的瀑布流布局。关于瀑布流:瀑布流布局(WaterfallLayout),也被称为瀑布......
  • 超30个好用的css动画库合集
    文章目录1.Animate.css2.Hover.css3.CSShake4.AniJS5.Lottie6.Animista-On-DemandCSSAnimationsLibrary7.HoverEffectIdeas8.Mo.js9.Hamburgers10.Loaders.css11.SpinKit12.CSSAnimation.io13.Tuesday14.Typed.js15.WOW.js16.Effeckt.css17.Mag......