当前位置: 首页 > news >正文

如何在Linux 上运行 SciChart WPF图表控件?

SciChart – 一个跨平台图表库,可实现 Windows Presentation Foundation (WPF)、JavaScript 以及原生 iOS (Swift/Objective-C) 和 Android (Java/Kotlin),基于代号为 Visual Xccelerator® 的专有 C++ 渲染引擎。这提供了 SciChart 众所周知的速度和性能,但另一个好处是,该引擎跨平台提供单一共享代码库,用于绘制高性能科学、金融和医疗图表和图形,并在 DirectX、OpenGL、Metal 和 WebGL 中提供硬件加速。

到目前为止,还没有可以在 Qt 中运行的纯 C++ 版本的 SciChart,但是,我们一直在努力为 SciChart 提供 Linux 支持。

SciChart 获取   

为什么在 Linux 上使用 SciChart?

WPF 应用程序通常是 Windows 应用程序,因为它们需要 Microsoft .NET 和 Windows Presentation Foundation 才能运行。但是,一部分要求极高的科学、金融或医疗应用程序需要在 Linux 上运行图表。这可能适用于:

  • 嵌入式系统
  • 定制便携式硬件
  • 电子测试设备
  • 射频或频谱分析仪
  • 示波器
  • 工厂、工业流程或石油钻井平台中的终端或信息亭
  • 船舶仪表
  • 飞机仪表

通过在嵌入式系统上运行 Linux,嵌入式设备制造商的成本基础将大幅下降,因为他们无需支付 Windows 许可证费用。

此外,Linux 的 RTOS(实时操作系统)特性使其非常适合需要高性能、大数据或实时图表的高性能关键嵌入式系统。

WPF 可以在 Linux 上运行吗?

微软于 2014 年推出了 .NET Core,后来被 .NET 取代,旨在成为 .NET Framework 的跨平台实现。众所周知,C# 代码和 .NET 多年来一直能够在 Linux(和 macOS)上运行,但 WPF 呢?

据微软官方消息,WPF 仅适用于 Windows,因为该框架的这一部分并未移植到 Linux。然而,Avalonia 的天才们却取得了惊人的成就:他们成功制作了一个完全跨平台的框架,名为 Avalonia XPF,这是 Windows Presentation Foundation 的一个版本,使用 OpenGL 而不是 DirectX 运行。

什么是 Avalonia XPF?

Avalonia XPF 是 Windows Presentation Foundation (WPF) 的专有跨平台实现,由 Avalonia UI 的开发人员为您带来。这使旧版和现有应用程序能够完全兼容 WPF,但允许它们在 Windows、Linux 和 macOS 上运行。它通过将 WPF 中的 DirectX 和 MilCore Windows 特定函数和例程替换为 OpenGL 和 C++ 中的等效函数和例程来实现这一点。结果是,现有的 WPF 应用程序可以移植到 Linux 上运行,通常无需任何代码更改,只需几分钟即可完成。

对于拥有大型 WPF 应用程序并希望针对多个平台的团队来说,这可以节省大量时间,这一点怎么强调也不为过。

为 Avalonia XPF 引入 SciChart

SciChart 已经与 Avalonia 团队合作了一段时间,为您带来了可在 Linux 上运行的与 Avalonia XPF 兼容的 SciChart WPF 版本。

以下是我们所做的以及我们的做法:

  • 我们的 C++ Visual Xccelerator® 引擎已重新定位到 Linux,并使用 CMake 进行编译
  • 我们已经替换了 SciChart 中的所有 DirectX 渲染,以便根据平台动态选择 DirectX 或 OpenGL。
  • 我们为 SciChart WPF 构建了一个并行解决方案,它将针对 Avalonia XPF 以及现有的 .NET Framework、.NET 6、7、8 等运行……
  • 示例应用程序和演示都已在新环境中测试。

需要说明的是,我们几乎无需对 SciChart WPF 本身进行任何代码更改,也 无需对 API 进行任何更改。这是一个完全 100% 兼容的 SciChart 版本,当针对 Avalonia XPF 时,它可以在 Linux 上神奇地运行。

早期预览 – Linux 上的 XPF 版 SciChart

下面是在 Linux 上运行的 Avalonia XPF 的 SciChart 的视频。

我们正在使用 Visual Studio Code 编译示例/演示应用程序,并在 Ubuntu VM 中运行一些示例。

值得注意的是,这是与 Windows 版 SciChart WPF 完全相同的代码和 API,这意味着当针对 Avalonia XPF 时,您的 Windows 应用程序将兼容并能够在 Linux 上运行。

第一个演示是 Spectrogram(频谱分析仪)演示,展示了 SciChart 在 Linux 上实时图表的实时功能,接下来是 ECG Monitor 演示,这是一个实时医疗生命体征监测器。

然后,我们展示了数字分析仪性能演示 - 这是一个大数据演示,它加载了多个数字数据通道,每个通道有数百万(甚至数亿)个数据点。这对于创建逻辑分析仪硬件很有用。

在撰写本文时,所有 2D 示例均已启用。3D 图表和示例也可用,但在发布之前我们还需要解决一两个错误。

以下是使用 Avalonia XPF 在 Linux 上运行的 SciChart WPF 的更多屏幕截图。

SciCharts 垂直堆叠 YAxis ECG 图表在 Linux 软件上显示

SciCharts 垂直堆叠 YAxis ECG 图表在 Linux 软件上显示

SciCharts 垂直堆叠 YAxis ECG 图表在 Linux 软件上显示

相关文章:

如何在Linux 上运行 SciChart WPF图表控件?

SciChart – 一个跨平台图表库,可实现 Windows Presentation Foundation (WPF)、JavaScript 以及原生 iOS (Swift/Objective-C) 和 Android (Java/Kotlin),基于代号为 Visual Xccelerator 的专有 C 渲染引擎。这提供了 SciChart 众所周知的速度和性能&am…...

C--字符串函数处理总结

文章目录 函数接口strchrstrtok 常见应用int 转化 字符串1 2 3 4 (int ) ---> 1,2,3,4 (char []) 字符串转化为 int1,2,3,4(char []) ---> 1 2 3 4 (int ) 函数接口 strchr char *strch…...

PLSQL-将一份excel数据导入到一张物理表(Oracle)

–>> 很简单~ 平时用惯了DBeaver,突然要用PLSQL Developer,确实很生疏。 –>> 我的场景,将一份.csv文件数据手动导入到Oracle下的一张物理表中去。 研究了半天,看网上说的可以用:Tools → ODBC Importer &…...

【系统架构设计师】状态模式

状态模式(State Pattern)是行为设计模式的一种,它允许一个对象在其内部状态改变时改变它的行为。对象看起来像是改变了它的类。这种模式可以用于实现一些复杂的有限状态机,在不同的条件下改变对象的行为而无需修改对象本身。下面是一个关于状态模式的详细介绍,包括其概念、…...

Linux网络编程1——socket通信

一.网络准备 1.套接字 在TCP/IP 协议中,“ip 地址TCP 或UDP 端口号”唯一标识网络通讯中的一个进程。“IP 地址端口号”就对应一个socket。欲建立连接的两个进程各自有一个 socket 来标识,那么这两个 socket 组成的 socket pair 就唯一标识一个连接。因…...

【每日一题】LeetCode 1052.爱生气的书店老板(数组、滑动窗口)

【每日一题】LeetCode 1052.爱生气的书店老板(数组、滑动窗口) 题目描述 书店老板的商店每天有不同数量的顾客进入。每分钟,老板可能或可能不会生气。如果老板生气,那一分钟的顾客就会不满意。老板知道一个秘密技巧,…...

IDEA中无法使用 Subversion 命令行客户端 svn Subversion 可执行文件的路径可能是错误的

IDEA中无法使用 Subversion 命令行客户端 svn 我在新电脑上安装好IDEA和SVN后使用IDEA拉取和提交项目时提示无法使用。 解决方案 我这边的问题是在安装TortoiseSVN的时候少启用了一个功能,需要重新安装并把这个功能启用。 在这一步需要把command line client to…...

ThreadLocal 在线程池中的内存泄漏问题

ThreadLocal 是一种非常方便的工具,它为每个线程创建独立的变量副本,避免了线程之间的共享数据问题。然而,在线程池环境中,ThreadLocal 的使用必须非常谨慎,否则可能会引发内存泄漏问题。 为什么 ThreadLocal 可能导致…...

如何编写Prompt,利用AI高效生成图表——图表狐(FoxChart)指南

在数据可视化领域,图表是数据的重要表达方式。为了让更多人能够轻松高校地生成美观、专业的图表,图表狐(FoxChart)应用而生。然而,要想充分发挥AI的潜力,编写合适的Prompt至关重要。本文介绍一些编写Prompt的原则,帮助…...

Redis主从数据同步过程:命令传播、部分重同步、复制偏移量等

请记住胡广一句话,所有的中间件所有的框架都是建立在基础之上,数据结构,计算机网络,计算机原理大伙一定得看透!!~ 1. Redis数据同步 1.1 数据同步过程 大家有没想过为什么Redis多机要进行数据同步&#…...

《JavaEE进阶》----13.<Spring Boot【配置文件】>

本篇博客讲解 1.SpringBoot配置文件的格式以及对应的语法 2.了解两个配置文件格式的差异、优缺点。 我们这里只做简单的介绍。看会,了解,学会读取就行了。 因为配置文件实在太多了,这里只做基础的介绍。 一、配置文件的作用 前言 计算机中有许…...

【练习8】

链接:https://www.nowcoder.com/questionTerminal/e671c6a913d448318a49be87850adbcc 分析: 创建一个二维数组来实现杨辉三角,因为当前元素的值是上一行的当前列与前一列的和,所以创建数组的时候要实现n1,相当于罩子一…...

vivado 时间汇总报告

步骤7:时间汇总报告 定时路径在时钟元素处开始和结束。输入和输出端口不是顺序的 元素,默认情况下,Vivado时序分析不会对进出I/O端口的路径进行计时 设计,除非指定了输入/输出延迟约束。 在此步骤中,您将在Vivado中生成…...

【软考】设计模式之代理模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 适用性6. 优点7. 缺点8. java示例 1. 说明 1.代理模式(Proxy Pattern)。2.意图:为其他对象提供一种代理以控制对这个对象的访问。3.通过提供与对象相同的接口来控制对这个对象的访问。4.是设计模…...

3.创建型设计模式详解:生成器模式与原型模式的深度解析

设计模式(Design Patterns)是软件开发中常用的解决方案,帮助开发者处理常见的设计问题。创建型设计模式专注于对象的实例化,旨在提高系统的灵活性和可维护性。在这篇文章中,我们将深入探讨创建型设计模式中的生成器模式…...

goframe结构体标签和命令行标签

元数据gmeta 基础标签 更多了解:https://swagger.io/specification/ g.Meta path:"/profile" method:"get" summary:"展示个人资料页面" tags:"个人" g.Meta mime:"text/html" type:"string" example…...

pytest压力测试:不断发送数据,直到发现数据丢失

示例场景 假设有一个 send_data 函数接受数据并返回成功或失败的状态。 创建一个测试用例,通过逐步增加数据量来测试这个函数,直到返回失败为止。 步骤 定义压力测试函数 定义一个函数。不断发送数据,直到发现数据丢失。 创建 pytest 测试…...

自选择问题和处理效应模型

自选择问题和处理效应模型 DGP 注意: 这里的概率密度超过了1,这是正常的。概率密度的三原则,1是大于等于0;2是积分等于1;对于连续型随机变量,给定一个具体的x值,f(x)并不是该事件发生的概率。而…...

[数据集][目标检测]水面垃圾检测数据集VOC+YOLO格式2027张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2027 标注数量(xml文件个数):2027 标注数量(txt文件个数):2027 标注…...

OpenCV 之 模版匹配多个对象、图片旋转 综合应用

引言 在图像处理和计算机视觉中,模板匹配是一种常用的技术,用于在一幅较大的图像中查找与给定模板图像相似的部分。然而,在实际应用中,目标物体可能会出现在不同的角度,这就需要我们在匹配之前对模板进行旋转处理。本…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...