《QT实用小工具·六十二》基于QT实现贝塞尔曲线画炫酷的波浪动画

news2024/11/17 3:39:37

1、概述
源码放在文章末尾

该项目实现了通过贝塞尔曲线画波浪动画,可控制 颜色+密度+速度+加速度
安装与运行环境
语言:C++
框架:Qt 11.3
平台:Windows

将屏幕水平平均分为10块,在一定范围内随机高度的12个点(左右出头),通过贝塞尔曲线连接连续的点,即可绘制成一段段连续的波浪。

但是每两端波浪都会有折线凸起,根据贝塞尔曲线的原理,两个控制点中点作为新的控制点,原来的两点连线即为该控制点在新曲线上的切线,这样既可绘制成只由三个控制点影响的B样条。

为了逼真,通过时钟以及大量状态机确定随机范围,例如在某一段时间整体偏下方,某一段时间整体偏上方,模仿大自然水面潮涨潮落。
项目demo演示如下所示:
在这里插入图片描述
项目部分代码如下所示:
创建:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    bw1 = new BezierWaveBean(this);
    bw1->set_offsety(geometry().height()/20); // 垂直偏移位置【可选】
    bw1->set_speedx(4); // 设置速度
    bw1->start();
}

绘制:

void MainWindow::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true); // 抗锯齿

    painter.fillPath(bw1->getPainterPath(painter), QColor(255, 0, 0, 50));

    return QMainWindow::paintEvent(e);
}

尺寸:

void MainWindow::resizeEvent(QResizeEvent *e)
{
    bw1->set_rect(geometry());
    return QMainWindow::resizeEvent(e);
}

开关:

bw1->start();  // 开始
bw1->pause();  // 暂停
bw1->resume(); // 继续

源码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1676418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论Java和C++方向选择

目录 1.难度2.就业压力3.岗位选择4.薪资待遇5.选择建议小结 1.难度 Java ,C, 测开,整体来说三个方向难度相当。 1.仅从语法角度来看,c 是掌控一切,知识都要懂一点,而java的特点在于省心,都封装…

【Unity Shader入门精要 第7章】基础纹理补充内容:MipMap原理

1.纹理采样 我们对纹理采样进行显示的过程,可以理解为将屏幕上的一个像素(下文用像素表示)映射到纹理上的一个像素(下文用纹素表示),然后用纹理上的这个像素的颜色进行显示。 理想情况下,屏幕…

河北霖超新材料科技有限公司邀您见证2024杭州数字物流展行业变革

参展企业介绍 河北霖超新材料科技有限公司是一家塑胶注塑制品生产的民营企业。是集模具开发、注塑加工、塑胶制品于一体的塑料配套产品解决方案提供商。主营:ABS塑料件、尼龙垫片、尼龙滑轮、护丝帽、聚氨酯制品、尼龙制品等产品。霖超公司发展几年来生产过几百种产…

AWS基础之Region/AZ/DC概念

从云厂商提供的服务物理地域上来划分,范围从大到小依次是Region-Available Zone-Data Center。 Region(区域):区域与区域之间的距离大概是几百公里或者几千公里。(可以理解为:中国和美国在不同的区域) Available Zon…

SpringBoot学习之SpringBoot(一)之初始化

SpringBoot(一)之初始化 文章目录 SpringBoot(一)之初始化SpringBoot框架 SpringBoot简化配置1. 创建SpringBoot项目关于初始化错误 2. SpringBoot项目结构主类pom.xml1. 关于spring-boot-starter-parent2. 关于spring-boot-starter-web3. 关于spring-boot-starter-test4. 关于…

达梦sql中参数个数太多导致出现SOH等特殊字符报错无效的序列号是不是达梦的bug

mybatis的Mapper.xml中如下: in中的参数大概有1万6千多个,分成每1000个一组拼接成sql,然而在达梦中执行时报如下: Caused by: dm.jdbc.driver.DMException: Invalid sequence noat dm.jdbc.driver.DBError.throwException(DBError.java:710)…

今日分享丨从简单传输到大文件分片上传

在数字化信息时代,文件传输技术的重要性不言而喻。从个人用户日常的文档、图片分享,到企业级的数据交换、云服务存储,再到科研领域庞大的数据集传输,文件传输技术的应用场景日益广泛,需求也日益增长。从简单的文本文件…

Airtest核心API汇总

2024.2.25更新:新增剪切板、Airtest1.3.3touch/swipe支持绝对坐标和相对坐标 2023.9.3更新:Airtest1.2.7新增14个断言、断开连接API;Airtest1.2.10.2新增录屏API; 以下基于airtest1.2.0(截止2021.7.12,最新版本) https…

gif动画图片如何生成?分享制作gif的小妙招

Gif动画图片的制作过程是非常好玩的,通过自制gif表情包让你在社交媒体中与朋友互动更容易。可以通过这种gif表情包的方式来表达你的情感,传递信息,让朋友更容易理解你的想法。想要制作gif动画只需要使用gif动画制作(https://www.g…

非对称加密算法在区块链中的应用

随着数字技术的迅猛发展,区块链技术因其独特的去中心化、不可篡改、透明公开等特性,逐渐成为各行各业关注的焦点。在区块链技术的众多组成部分中,非对称加密算法无疑是其中最为基础和关键的一环。本文旨在探讨非对称加密算法在区块链中的应用…

C++|多态性与虚函数(1)功能绑定|向上转换类型|虚函数

目录 什么是多态性? 概念 分类 向上类型转换 功能的早绑定和晚绑定 绑定 绑定与多态的联系 编译时多态(功能的早绑定) 运行时多态(功能的晚绑定) 一般而言 实现功能晚绑定——虚函数 虚函数定义的说明 什么…

CSS表格特殊样式

列组样式 使用colgroup与col标签配合可以定义列祖样式&#xff1a;例 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>table,tr,th,td{border: 1px solid #000;}table{border-collapse: coll…

Meilisearch使用过程趟过的坑

Elasticsearch 做为老牌搜索引擎&#xff0c;功能基本满足&#xff0c;但复杂&#xff0c;重量级&#xff0c;适合大数据量。 MeiliSearch 设计目标针对数据在 500GB 左右的搜索需求&#xff0c;极快&#xff0c;单文件&#xff0c;超轻量。 所以&#xff0c;对于中小型项目来说…

基于SVPWM控制策略的二极管钳位型NPC逆变器并网闭环simulink仿真

本人搭建了基于SVPWM控制策略的二极管钳位型NPC逆变器并网闭环的simulink仿真模型&#xff0c;该模型采用SVPWM闭环控制实现并网控制。效果优异&#xff0c;配备参考资料&#xff0c;适合新手学习使用。 DC&#xff1a;800V AC:380V 功率&#xff1a;100kw 拓扑&#xff1a;…

fastjson_1.2.24和Shiro(CVE-2016-4437)漏洞复现

文章目录 一、fastjson 1.2.24远程命令执行漏洞复现二、shiro反序列化漏洞(CVE-2016-4437)1、Shiro漏洞原理2、手工验证漏洞3、使用ShiroAttack2 一、fastjson 1.2.24远程命令执行漏洞复现 配置环境&#xff1a;本机java 8环境 kali操作系统&#xff08;java8&#xff09; c…

如果你想学习大数据,那么你应该看看这些高分佳作

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java人自己的交流群“共同富裕的 Java 人”。 今天和大家分享的主题是&#xff1a;大数据入门书籍。公众号内回复关键字&#xff1a;20240515&#xff0c;即可获取。 &a…

【正版系统】海外短剧系统功能介绍,前端uniapp+开源。

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、海外短剧系统功能介绍 二、搭建要求 1.系统要求 总结 前言 短剧作为一种快速、紧凑的娱乐形式&#xff0c;正逐渐受到更多海外观众的喜爱。这种需求增长为…

基于RTL8710BN与天猫精灵的WIFI智能家居方案

0 项目简介 目的&#xff1a; 语音控制智能家居产品 基于阿里云的物联网产品 基于WiFi技术的嵌入式产品 主要技术&#xff1a; WiFi技术 常用的物联网协议 网络编程 云平台配置 MCU OPENSDK开发 阿里物联网操作系统 硬件&#xff1a; wifi开发板RTL8710BN 天猫精灵…

版本控制:软件开发的基石(一文读懂版本控制)

未经允许&#xff0c;禁止转载&#xff01; 在现代软件开发中&#xff0c;版本控制是不可或缺的工具。它帮助开发者跟踪和管理代码的变化&#xff0c;协作完成项目&#xff0c;并确保代码的完整性和安全性。本文将基于Git官网的视频“什么是版本控制”来深入探讨版本控制的基本…

Linux常用指令集合

ls显示目录文件 选项&#xff1a; -a 所有文件&#xff08;all所有&#xff09; -l 详细信息&#xff08;Information信息&#xff09;&#xff08;自动包含-1&#xff09; 所以常用 ll -1 一行只输出一个文件。 -R 列出所有子目录下的文件。…