QGraphicsView实现简易地图17『涟漪效果』

前文链接:QGraphicsView实现简易地图16『爆炸效果』
模仿水波荡漾时的涟漪效果,参考了echarts中的散点图
支持设置散点大小、颜色、涟漪线条宽度。
动态演示效果

静态展示图片
在这里插入图片描述
核心代码

#pragma once
#include "../AbstractGeoItem.h"
#include "DataStruct/GeoData.h"/** 散点效果-静态*/class EffectScatterItem : public AbstractGeoItem
{
public:explicit EffectScatterItem(const GeoCoord &geoCoord, int radius, QGraphicsItem *parent = nullptr);~EffectScatterItem();// 设置百分比(值:0-1)void setPercent(double percent);// 获取百分比double percent();// 设置颜色void setColor(QColor color);// 设置涟漪线宽void setRippleWidth(double width);protected:virtual QRectF boundingRect() const override;virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;private:int m_radius;			// 半径(单位:像素)double m_percent;		// 每条涟漪扩散百分比double m_ripplesWidth;	// 涟漪线宽QColor m_color;			// 颜色
};
#include "EffectScatterItem.h"
#include <QPainter>EffectScatterItem::EffectScatterItem(const GeoCoord &geoCoord, int radius, QGraphicsItem *parent /*= nullptr*/): AbstractGeoItem(parent)
{setZValue(302);setGeoPos(geoCoord.lon, geoCoord.lat);m_radius = radius;m_percent = 0;m_ripplesWidth = 1.5;m_color = Qt::white;
}EffectScatterItem::~EffectScatterItem()
{}void EffectScatterItem::setPercent(double percent)
{m_percent = percent;update();
}double EffectScatterItem::percent()
{return m_percent;
}void EffectScatterItem::setColor(QColor color)
{m_color = color;update();
}void EffectScatterItem::setRippleWidth(double width)
{m_ripplesWidth = width;update();
}QRectF EffectScatterItem::boundingRect() const
{return QRectF(-m_radius, -m_radius, 2 * m_radius, 2 * m_radius);
}void EffectScatterItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{painter->setPen(Qt::NoPen);painter->setBrush(m_color);painter->setRenderHint(QPainter::Antialiasing);painter->drawEllipse(QPointF(0, 0), m_radius * 0.4, m_radius * 0.4);painter->setBrush(Qt::NoBrush);for (int i = 1; i <= 3; ++i){QColor color = m_color;color.setAlphaF((4 - i - m_percent) / 3);painter->setPen(QPen(color, m_ripplesWidth));double radius = m_radius * (0.4 + (i - 1 + m_percent) * 0.2);painter->drawEllipse(QPointF(0, 0), radius, radius);}
}

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

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

相关文章

452. 用最少数量的箭引爆气球(中等)

452. 用最少数量的箭引爆气球 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转&#xff1a;452. 用最少数量的箭引爆气球 2.详细题解 引爆所有气球&#xff0c;弓箭数要最少&#xff0c;那么每支弓箭尽量多的引爆气球&#xff0c;采用贪心策略。对于…

ThingsBoard网关在燃气泄漏监测中的应用

据不完全统计&#xff0c;全国城市燃气企业的供销差率大约在3%~4%&#xff0c;也就意味着越多的天然气销量就有越多的天然气损失。城市燃气企业计量管理已经接近最不利的状态&#xff0c;开展有效的计量管理势在必行。 智慧燃气综合管理系统 在燃气管网中部署智能传感器、数据采…

AI分析SP和pk进行sk分析

SP原始表行标题代表题目序号&#xff0c;列代表学生&#xff0c;如果学生答对题目为1&#xff0c;否则为0。问题知识点矩阵这个文件横轴代表每个知识点&#xff0c;列标题代表每个题目序号&#xff0c;如果题目包含这个知识点则该处值为1。通过两个文件判断学生对于每个知识点的…

微服务架构中服务间通信的最佳实践是什么?

在微服务架构中&#xff0c;服务间通信的最佳实践通常是使用轻量级的通信机制&#xff0c;如HTTP或RPC。以下是一些关键的最佳实践&#xff1a; 使用RESTful API或类似的设计风格&#xff1a;RESTful API基于标准的HTTP方法和状态码&#xff0c;使得服务之间的通信更加简单和可…

【一站式学会Kotlin】第十一节:非空断言操作符!!

作者介绍: 百度资深Android工程师T6,在百度任职7年半。 目前:成立赵小灰代码工作室,欢迎大家找我交流Android、微信小程序、鸿蒙项目。= 一:通俗易懂的人工智能教程:https://www.captainbed.cn/nefu/ 点一下,打开新世界的大门。 二:【一站式学会Kotlin】免费领取:作者…

规格说明(Specifications)

1.为什么需要规格说明&#xff1f; &#xff08;1&#xff09;许多程序中的严重错误是由于代码之间接口的行为误解引起的。虽然每个程序员心中都有规格说明&#xff0c;但并非所有程序员都将其写下来。这导致团队中的不同程序员对同一个接口有不同的理解。 &#xff08;2&#…

Web安全:文件上传漏洞详解,文件上传漏洞原理、绕过方式和防御方案。

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

Java实现链表

链表 前言一、链表的概念及结构二、链表的分类三、链表的实现无头单向非循环链表实现无头双向链表实现具体代码 四、链表习题五、顺序表和链表的区别 前言 推荐一个网站给想要了解或者学习人工智能知识的读者&#xff0c;这个网站里内容讲解通俗易懂且风趣幽默&#xff0c;对我…

51单片机-实机演示(单多个数码管)

仿真链接&#xff1a; http://t.csdnimg.cn/QAPhx 目录 一.引脚位置 二.多个显示 三 扩展 一.引脚位置 注意P00 - >A ; 这个多个的在左边,右边的A到B是控制最右边那个单个的. 接下来上显示单个的代码 #include <reg52.h> #include <intrins.h> #define u…

大字体学生出勤记录系统网页HTML源码

源码介绍 上课需要一个个点名记录出勤情况&#xff0c;就借助AI制作了一个网页版学生出勤记录系统&#xff0c; 大字体显示学生姓名和照片&#xff0c;让坐在最后排学生也能看清楚&#xff0c;显示姓名同时会语音播报姓名&#xff0c; 操作很简单&#xff0c;先导入学生姓名…

嵌入式学习 (Day:27 IPC --- 进程间通信)

IPC 进程间通信 interprocess communicate &#xff08;即&#xff1a;进程间进行数据交换&#xff09; 三大类&#xff1a; 进程间通信的方式&#xff08;共8种&#xff09; 1、古老的通信方式&#xff08;Linux设计时就有的&#xff09; 无名管道 有名…

用源码建站可能涉及知产侵权,建站的注意!

近日普推知产老杨看到央视报道一家公司用了某建站源码涉及知产侵权&#xff0c;起诉了全国八千多家公司&#xff0c;某梦自从创始人因病转给某公司后&#xff0c;也在大量起诉用其建站代码公司侵权&#xff0c;他们也都是申请了相关的著作权。 有的中小企业在运营中会涉及建站…

c++ 将指针转换为 void* 后,转换为怎么判断原指针类型?

当将指针转换为void后&#xff0c;擦除了指针所指向对象的类型信息&#xff0c;因此无法通过void指针来判断原始指针的类型。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个…

【面试题】JavaScript基础高频面试(下)

10、Javascript 闭包是什么,闭包形成的原因和闭包的用途 &#xff1f; 闭包&#xff08;Closure&#xff09;是 JavaScript 中的一个非常重要的概念。简单地说&#xff0c;闭包就是一个函数能够访问另一个函数的作用域。这是因为在 JavaScript 中&#xff0c;函数是一等公民&a…

Oracle直接路径读解析

目录 一、直接路径读概念二、直接路径读在OLTP和OLAP环境中的不同点三、如何禁止直接路径读方法1&#xff1a;使用事件设置方法2&#xff1a;使用隐含参数 一、直接路径读概念 直接路径读&#xff08;Direct Path Read&#xff09;是Oracle数据库中的一种数据读取机制&#xf…

10编码(数据转化为信号)

目录 数据转化为信号 数字数据编码为数字信号&#xff1a; 数字数据调制为模拟信号&#xff1a; 模拟数据编码为数字信号&#xff1a; 模拟数据调制为模拟信号&#xff1a; 数据转化为信号 数据转化为数字信号要通过编码&#xff0c;转化为模拟信号通过调制 数据又分为数字…

PXI总线测试模块-6939 矢量信号发生器

频率范围&#xff1a;250kHz&#xff5e;6GHz 6939 矢量信号发生器 6939矢量信号发生器提供频率范围250kHz~6GHz的多制式信号&#xff0c;单边带相位噪声优于-120dBc/Hz10kHz&#xff08;载波1GHz&#xff09;、EVM优于1.0%&#xff0c;能够实现高纯连续波输出、模拟调制信号输…

Linux: network: TCP: zero window size/window full 示例

最近遇到一个问题,当前机器的CPU使用率非常高,然后导致其中一个程序处理socket的数据过慢,然后出现下面的zero的示例。 下面是在接收buff用光的时候,发出的 TCP zeroWindows的消息 这种问题就是内存,CPU,网速之间的性能取舍。具体解决的话,需要看具体的需要是什么样的?…

参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning

参数高效微调PEFT(一)快速入门BitFit、Prompt Tuning、Prefix Tuning 目前&#xff0c;模型最全的网站是HuggingFace&#xff0c;但是国内需要魔法流量才能访问。另外&#xff0c;现在大模型权重文件都较大&#xff0c;也会浪费不少流量&#xff0c;因此这里推荐使用魔搭社区下…

Spring+SpringBoot面试总结(近两万字)

SpringSpringBoot面试总结 一、Spring Bean1.1、bean的生命周期&#xff08;对象的创建使用销毁&#xff09;1.1.1、准备工作1.1.2、创建Bean对象1.1.3、注册销毁 1.2、 bean的作用域1.2.1、配置方式 1.3、 spring 自动装配 bean 有哪些方式&#xff08;存疑存疑&#xff09;1.…