Avalonia ScottPlot跨平台图表测试

Avalonia ScottPlot

Avalonia是.Net跨平台的UI库,支持Windows,Linux,iOS,MacOS,Android等;
ScottPlot为跨平台的UI控件库,支持Avalonia,Windows,Eto,等平台;本文测试内容为Avalonia在Windows,Linux,Android,WebAssembly平台实时动态曲线测试;
本文代码

步骤

  1. 安装Avalonia For VS2022扩展
  2. 新建名为AvaScottPlot的Avalonia Cross Platform项目
  3. 将AvaScottPlot主工程及各个平台的启动工程改为.Net8
  4. AvaScottPlot工程增加如下引用
     <PackageReference Include="ScottPlot.Avalonia" Version="5.0.20" />
  1. 写代码
  2. 启动AvaScottPlot.Desktop等工程调试
  3. Linux端选择AvaScottPlot.Desktop发布为linux-x64选择单文件

关键代码

<!--MainView.axaml-->
<sc:AvaPlot x:Name="plot" />
// MainView.axaml.cs
 private void InitLines()
 {
     if (plot == null) return;
     // PlotFont = Fonts.Detect("实时数据");
     plot.Plot.Axes.Title.Label.Text = "RealTime Data:实时数据";
     plot.Plot.Axes.Title.Label.FontName = PlotFont;
     plot.Plot.Clear();
     Lines = new LineModel[LineCount];
     DateTime start = DateTime.Now;
     for (int i = 0; i < LineCount; i++)
     {
         Lines[i] = new LineModel();
         Lines[i].Init(i + 1, plot.Plot, start);
     }
     plot.Plot.Benchmark.IsVisible = true;
 }

 public void UpdateData(DateTime ts, double[] data)
 {
     int Min = Math.Min(data.Length, Lines.Length);
     if (Min <= 0) return;
     for (int i = 0; i < Min; i++)
     {
         UpdateData(i, ts, data[i]);
     }
     Render();
 }
 private void UpdateData(int i, DateTime ts, double latestValue)
 {
     var tmp = Lines[i];
     tmp.UpdateData(ts, latestValue);
 }
 public void Render()
 {
     plot.Plot.Axes.AutoScale();
     plot.Refresh();
 }
 private void TimerElapsed(object? sender, EventArgs e)
 {
     double[] data = new double[LineCount];
     for (int i = 0; i < LineCount; i++)
     {
         data[i] = Generate.RandomData.RandomNumber(100);
     }
     UpdateData(DateTime.Now, data);
 }

效果

本人电脑配置i5-1035G1,浏览器:Chrome 120.0.6099.225,虚拟机:VMware Workstation 16.2.3 Player;曲线数量20条;

  1. Avalonia On Windows 32FPS
    在这里插入图片描述

  2. Avalonia On WebAssembly FPS为1,最小化浏览器时不渲染
    在这里插入图片描述

  3. Avalonia On Linux 在虚拟机中运行FPS为1
    在这里插入图片描述

  4. Avalonia On Android
    在这里插入图片描述

已知问题

  1. WebAssembly工程中文显示异常,暂时无法解决
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文光山石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值