如何在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 的更多屏幕截图。

相关推荐
blessing。。2 分钟前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
2202_7544215417 分钟前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
努力的悟空44 分钟前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
运维&陈同学1 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
周末不下雨2 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
哎呦喂-ll3 小时前
Linux进阶:环境变量
linux
耗同学一米八3 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
Rverdoser3 小时前
Linux环境开启MongoDB的安全认证
linux·安全·mongodb
PigeonGuan3 小时前
【jupyter】linux服务器怎么使用jupyter
linux·ide·jupyter