演示:基于WPF的DrawingVisual开发的高刷新率示波器

一、目的:分享一个基于WPF的DrawingVisual开发的高刷新率示波器


二、效果演示

特此说明:由于Gif录制工具帧率不够,渲染60帧用了4.6秒,平均帧率在12Hz左右,所以展示效果不好,想要看好些的效果可以看文章下面的B站视频作为参考

        但B站的录制工具也是在25帧/秒这样,而电脑默认满帧60Hz,应用程序也可以渲染到50-60帧/秒,所以实际应用程序效果要好于视频效果 

        如下示例中,FPS部分就是展示实际渲染的帧率基本可以保持在50-60Hz之间(60Hz是本电脑设置的默认最高帧率) 


随机数据(2000条数据)

正弦曲线(2000条数据)

 自定义波形(2000条数据)

 脉冲波形(2000条数据)

方波波形 (2000条数据)

三、环境

VS2022,Net7,Win10,NVIDIA RTX A2000

四、主要功能

支持多种波形数据源作为测试数据

支持多种渲染模式(主要分为矢量和位图)

支持设置起始频率,终止频率,中心频率,频率宽度,最小功率和最大功率设置

支持ToolTip鼠标悬停显示频谱信息

支持暂停/播放操作

平移,缩放,适配等操作

支持显示Fps(刷新率) 

 

五、性能和实现 

具体实现和数据如下参考文章

演示:基于WPF的DrawingVisual开发的频谱图和律动图_差值均分-CSDN博客

另外对于密集的点可以使用低分辨率的位图进行渲染来提升帧率,总之,制作高刷新的示波图可以从如下方面优化:

1、降低数据点数量;

2、提高硬件尤其是GPU配置;

3、采用高性能的绘图方式;

4、读写分离、渲染线程和更新数据线程分离;

5、动静分离、静态坐标轴、网格等数据和动态曲线数据分层渲染;

6、重复的数据应该应用缓存,避免重复创建;

7、可以冻结的资源应用冻结提升性能;

8、虚拟化截取掉不需要渲染的区域;

9、尽量缩小显示的范围,越小刷新效果越好;

10、注意细节,比如尽量减少使用虚线,实际中过多的虚线会大大消耗渲染性能;

        总之影响性能的因素很多,而可能任意一种都会使渲染效果不理想,所以要注意细节,逐一隔离各种影响性能的因素去调试哪些影响到绘制性能,其他待补充...

六、演示视频 

【WPF-Spectrum】高刷新率示波器_哔哩哔哩_bilibili

注:录制视频工具实际是25帧/秒,而实际渲染速度大概在50-60 帧/秒

需要了解的知识点 

DrawingContext Class (System.Windows.Media) | Microsoft Learn

System.Windows.Controls 命名空间 | Microsoft Learn

控件库 - WPF .NET Framework | Microsoft Learn

WPF 介绍 | Microsoft Learn

XAML概述 - WPF .NET | Microsoft Learn

Windows Presentation Foundation 简介 - WPF .NET | Microsoft Learn

使用 Visual Studio 创建新应用教程 - WPF .NET | Microsoft Learn

了解更多

适用于 .NET 8 的 WPF 的新增功能 - WPF .NET | Microsoft Learn

适用于 .NET 7 的 WPF 的新增功能 - WPF .NET | Microsoft Learn

System.Windows.Controls 命名空间 | Microsoft Learn

Reference Source

Sysinternals - Sysinternals | Microsoft Learn

Windows app development documentation - Windows apps | Microsoft Learn

欢迎使用 Expression Blend | Microsoft Learn

https://learn.microsoft.com/zh-cn/dotnet/desktop/wpf/?view=netdesktop-7.0&WT.mc_id=MVP_380318

https://github.com/HeBianGu

HeBianGu的个人空间-HeBianGu个人主页-哔哩哔哩视频

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安科瑞智慧能源管理系统EMS3.0在浙江某能源集团有限公司的应用

安科瑞戴婷 Acrel-Fanny 一、项目背景 浙江某能源集团有限公司位于浙江省宁波前湾新区,主营业务范围包括了储能技术服务,光伏风力发电技术服务,充电桩技术服务,新能源项目的施工以及为企业提供配电房运维服务。 随着新能源的兴…

[ComfyUI]Flux:爆火禅语小和尚素材!禅意人生,享受自在

在快节奏的现代生活中,人们越来越渴望一种宁静和放松的状态。而禅意小和尚素材正是这样一种能够带给我们内心宁静和智慧的存在。ComfyUI的Flux框架结合了禅意小和尚素材,为我们提供了一个探索禅意人生的独特方式。 禅意小和尚素材源于佛教文化&#xff…

DORA 机器人中间件学习教程(5)——3D激光雷达数据可视化

DORA中3D激光雷达数据可视化 1 总体思路2 DORA数据接收节点3 编写yml文件4 启动节点参考资料 截止目前 DORA还没有类似于ROS2中RVIZ这样的可视化工具,而在调试算法时我们又需要将数据进行可视化以验证代码的正确性。目前的解决方法是将DORA中的数据发送到ROS2中&…

ubuntu查看系统版本命令

查看系统版本指令 在 Ubuntu 操作系统中,您可以使用多个命令来查看系统版本。以下是一些常用的命令: lsb_release -a 这个命令会显示详细的 Ubuntu 版本信息,包括发行版名称、版本号、代号等。lsb_release -acat /etc/os-release 这个命令会显…

实用好助手

在现代职场中,拥有高效且适用的工具能够显著提升我们的工作效率与质量。除了常见的办公软件,还有许多小众但非常实用的工具可以大幅度优化工作流程。以下是另外五个推荐的工作软件,它们各自具备独特的功能与优势,值得一试。 1 …

MongoDB未授权访问

mongodb未授权访问漏洞 复现 MongoDB[//]: # (忙够DB)是一种流行的开源文档数据库管理系统(DBMS),基于分布式文件存储的数据库属于NoSQL数据库的一种。 开启MongoDB服务时不添加任何参数时,默认是没有权限验证的 登录的用户可以通过默认端口…

双十一适合买什么东西?2024年双十一收藏榜单必买好物分享!

随着双十一的脚步日益临近,各大电商平台已经开始了激烈的促销竞争。作为每年最盛大的购物节,双十一不仅吸引了无数消费者的积极参与,也成为品牌和产品质量的一次大检阅。那么,在2024年的双十一,哪些商品是值得购买的呢…

智能手表核心芯片~手表心率监测芯片AFE4900浅析(附一篇智能手表专利推荐)

智能手表核心芯片~手表心率监测芯片AFE4900浅析(附一篇智能手表专利推荐) 本期是平台君和您分享的第89期内容 2024年8月,安徽华米信息技术及美国的智能手表品牌ZEPP公司在美国对深圳思佰特公司提起诉讼,涉及专利、商标和不正当竞争。 起诉书(来源:RPX网站) 看到这则新闻…

linux 离线安装redis

1.官网下载 https://redis.io/download 或者去github下载 2.安装 Redis 解压 unzip redis-6.2.16.zip安装gcc #由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v) gcc -v若无安装gcc,参考我的文章 Lin…

三维可视化生产线,是工业4.0最直接的落地应用

工业 4.0 强调智能化、数字化和网络化的生产模式,而三维可视化生产线完美地契合了这些要求。通过三维可视化技术,生产线的各个环节可以以逼真的三维模型形式呈现在人们眼前。 从设计阶段开始,工程师们可以利用三维可视化工具进行生产线的规划…

模拟芯片 ADI 亚德诺半导体常用芯片分享(一)

在电子领域,ADI(亚德诺半导体)以其卓越的技术和可靠的品质,成为众多工程师和企业的首选。亿配芯城 (ICgoodFind )为您带来一系列 ADI 的常用模拟芯片。 ADI 的模拟芯片广泛应用于各个领域,无论…

在海外留学/工作,如何报考微软mos认证?

重点首先得强调的是,即使在海外也可以顺利地在国内获取微软MOS认证! 01 微软mos认证简介 Microsoft Office Specialist 简称MOS。是微软公司和第三方国际认证机构、全球三大IT测验与教学中心之一的思递波/Certiport公司于1997年联合推出的,…

英语语法学习框架(考研)

一、简单句 英语都是由简单句构成,简单句共有五种基本句型:①主谓;②主谓宾;③主谓宾宾补;④主谓宾间宾(间接宾语);⑤主系表; 其中谓语是句子最重要的部分,谓…

Linux之实战命令45:swapon应用实例(七十九)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【…

AI 网关:助力企业将探索快速转化为生产应用

**概括:**AI网关是将企业的实验探索转化为生产的关键工具。AI网关通过有效管理API流量、控制成本、提升可靠性和安全性,支持企业在AI技术快速发展的环境中持续创新,能够确保可扩展性和灵活性,使企业能应对不断增长的业务需求和复杂…

线性代数 向量

一、定义 几何定义:向量是一个有方向和大小的量,通常用箭头表示。向量的起点称为原点,终点称为向量的端点。 代数定义:向量是一个有序的数组,通常表示为列向量或行向量。 行向量就是 1*n的形式(行展开&…

计算机毕业设计 基于Python的社交音乐分享平台的设计与实现 Python毕业设计 Python毕业设计选题【附源码+安装调试】

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

重磅发布,Wireshark 4.4.1 修复多个漏洞,性能新升级

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 中午好,我的网工朋友 Wireshark 一直以其强大的数据包捕获和分析功能而闻名。作为网络工程师、安全分析师和开发者的重要工具&#x…

【Vercel】Vercel静态部署踩坑

背景 在现代的软件开发中,自动化部署是一个不可或缺的环节。Vercel作为一个流行的前端部署平台,提供了与GitHub的无缝集成,使得开发者能够在每次提交代码后自动触发部署流程。然而,自动化部署过程中可能会遇到一些挑战&#xff0…

15分钟学Go 第6天:变量与常量

第6天:变量与常量 在Go语言中,变量和常量是编程的基础概念。理解如何定义和使用它们不仅能帮助我们管理数据,还能增强代码的可读性和可维护性。在本章中,我们将详细探讨Go语言中的变量和常量,涵盖它们的定义、使用、作…