LiveCharts WPF 实时数据慢。提高 LiveCharts 实时绘图性能

该库的实施相当糟糕。有一个付费版本宣传自己比免费版本性能更高。我还没有测试付费版本。免费版的图表控件非常慢,尤其是在处理庞大的数据集时。

显然,默认情况下默认CartesianChart.AnimationSpeed设置为 500ms。在实时场景中将绘图速率提高到 1/450 毫秒以上将导致“丢失”帧。“丢失”意味着数据最终可见,但不是实时绘制的。每个布局失效的渲染过程只需要太长时间。
超过 450 毫秒将使情节显得滞后(由于跳帧)。这是执行不力的结果。当超过 500 毫秒的默认动画速度时,应禁用动画。

无论如何,您可以采取一些措施来提高整体性能,从而显着超过 450 毫秒:

使用ObservablePoint或ObservableValue或一般让您的数据类型实现INotifyPropertyChanged。在修改固定/不可变数据项集而不是修改源集合(例如,通过添加/删除项)时,您可以获得更好的结果。
通过设置LineSeries.PointGeometry为删除图形的实际视觉点元素null。这将删除额外的渲染元素。线条笔划本身将保持可见。这将显着提高性能。
设置Chart.Hoverable为false禁用鼠标悬停效果。
设置Chart.DataTooltip为{x:Null}禁用工具提示对象的创建。
设置Chart.DisableAnimations为true。禁用动画将显着提高渲染性能。或者通过设置禁用每个轴的选择性动画Axis.DisableAnimations。
设置Axis.MinValue和Axis.MaxValue禁用每次值更改时的自动缩放。在 x 轴值发生变化的大多数情况下,您也必须实时调整这两个属性。
SetAxis.Unit还显着改善了重新渲染时的外观。
UIElement.CacheMode在图表对象上设置。使用 aBitmapCache允许禁用像素捕捉和修改渲染缩放。BitmapCache.RenderAtScale低于此值会1增加模糊度,但也会增加UIElement.

主窗口.xaml

<Window>
  <Window.DataContext>
    <DataModel />
  </Window.DataContext>

  <CartesianChart Height="500" 
                  Zoom="None"  
                  Hoverable="False" 
                  DataTooltip="{x:Null}" 
                  DisableAnimations="True">
    <wpf:CartesianChart.Series>
      <wpf:LineSeries PointGeometry="{x:Null}"
                      Title="Sine Graph"
                      Values="{Binding ChartValues}"
                      Configuration="{Binding DataMapper}"/>
    </wpf:CartesianChart.Series>

    <CartesianChart.CacheMode>
      <BitmapCache EnableClearType="False" 
                   RenderAtScale="1"
                   SnapsToDevicePixels="False" />
    </CartesianChart.CacheMode>

    <CartesianChart.AxisY>
      <Axis Title="Sin(X)"
            FontSize="14" 
            Unit="1"
            MaxValue="1.1"
            MinValue="-1.1" 
            DisableAnimations="True"
            LabelFormatter="{Binding LabelFormatter}"
            Foreground="PaleVioletRed" />
    </CartesianChart.AxisY>

    <CartesianChart.AxisX>
      <Axis Title="X" 
            DisableAnimations="True" 
            FontSize="14" 
            Unit="1"
            MaxValue="{Binding XMax}"
            MinValue="{Binding XMin}"
            Foreground="PaleVioletRed" />
    </CartesianChart.AxisX>
  </CartesianChart>
</Window>
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
基于.NET Framework的WinForm项目可以使用图表插件来实现数据可视化,其中一个常用的图表插件是LiveCharts。下面是使用LiveCharts在WinForm项目中创建图表的示例代码: 首先,确保你的WinForm项目已经引用了LiveCharts库。你可以通过NuGet包管理器来添加引用,或者手动下载并添加引用。 接下来,在你的WinForm窗体中添加一个Chart控件,可以通过拖拽方式添加或者在代码中动态创建。 然后,在窗体的代码文件中,导入LiveCharts命名空间,并使用以下代码来创建和配置图表: ```csharp using LiveCharts; using LiveCharts.Wpf; // 创建一个SeriesCollection对象,用于存储图表的数据系列 SeriesCollection seriesCollection = new SeriesCollection(); // 创建一个LineSeries对象,表示折线图 LineSeries lineSeries = new LineSeries(); // 设置折线图的标题和数据 lineSeries.Title = "折线图"; lineSeries.Values = new ChartValues<double> { 1, 3, 2, 8, 5 }; // 将折线图添加到SeriesCollection中 seriesCollection.Add(lineSeries); // 将SeriesCollection对象设置为Chart控件的Series属性 chart.Series = seriesCollection; ``` 以上代码创建了一个折线图,并将其添加到Chart控件中显示。你可以根据需要修改图表的类型、样式和数据。 请注意,以上示例代码是基于C#语言的WinForm项目,使用LiveCharts库来创建图表。如果你使用的是其他语言或其他图表插件,可能会有一些差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BeanGo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值