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



相关文章:
如何在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 之 模版匹配多个对象、图片旋转 综合应用
引言 在图像处理和计算机视觉中,模板匹配是一种常用的技术,用于在一幅较大的图像中查找与给定模板图像相似的部分。然而,在实际应用中,目标物体可能会出现在不同的角度,这就需要我们在匹配之前对模板进行旋转处理。本…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
