WPF显示数据图表(LiveCharts2)

最近接手一个小项目,需要做一个数据显示大屏,要能显示曲线,显示进出量,重点是要好看

a1cf7eb95c76e8d837ffbecbae934a43.pngeb6818f3a78e5b4f6209f57906255f0c.pngafabe8ee9ccff6baacc109b22acca9da.png我哪知道什么是好看,就随便做做呗。

2c1570c6465da7431f8390facf8c9be5.png

数据都是假的,只是做出一个效果。显示这种数据图,使用的是LiveCharts2。这是一个非常漂亮的Charts模块。官网如下:

https://www.lvcharts.com/

f957edfbcb978a4b69634b04b84ada85.png

62ded97bb8782162b978b08e985e68e5.png

LiveCharts2支持的还挺多,我们在这里选择WPF。

如果我们直接通过NuGet进行搜索,会发现找到的LiveCharts版本较旧。

dcbecf6a8a946f988d0501dd7dd87273.png

LiveCharts2相对V0版本做了很多改进和修复,但是目前还是测试版,所以我们通过官网的指引进行安装。

新建一个空白WPF模板,打开程序包管理器控制台,输入:

Install-Package LiveChartsCore.SkiaSharpView.WPF -Version 2.0.0-beta.701

ff4080142e5028a816447d6347c9c4d3.png

等待安装完成,就可以找到了。

9a6dbb761cacb4ce61585a0e25b0a4ec.png

顺便安装一下CommunityToolkit.Mvvm,这个可以通过NuGet找到,这个包是因为GalaSoft.MVVMLight已经不再维护,所以官方做的新模型,可以很好的迁移进来。

新建一个MainViewModel,添加引用,增加代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LiveChartsCore;
using LiveChartsCore.SkiaSharpView;
using CommunityToolkit.Mvvm.ComponentModel;


namespace LiveChartsDemo
{
    [ObservableObject]
    public partial class MainViewModel
    {
        public ISeries[] Series { get; set; }
            = new ISeries[]
            {
                new LineSeries<double>
                {
                    Values = new double[] { 2, 1, 3, 5, 3, 4, 6 },
                    Fill = null
                }
            };
    }
}

然后到MainWindow.xaml里,引用LiveCharts,设置DataContext。

xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.WPF;assembly=LiveChartsCore.SkiaSharpView.WPF"
<Window.DataContext>
        <local:MainViewModel />
    </Window.DataContext>

然后增加CartesianChart

<Grid>
        <lvc:CartesianChart Series="{Binding Series}" />
    </Grid>

2dbde97365373744e5d4d7fbd5e0a0f8.png

LineSeries以为者设置的线形图,当然还能有柱状图。

public ISeries[] Series { get; set; }
            = new ISeries[]
            {
                new ColumnSeries<double>
                {
                    Values = new double[] { 2, 1, 3, 5, 3, 4, 6 },
                },
                new LineSeries<double>
                {
                    Values = new double[] { 2, 1, 3, 5, 3, 4, 6 },
                    Fill = null
                },
            };

a8f5d05fa6f6738718dff0973945c916.png

还可以增加Title,用于说明图标的作用。

public LabelVisual Title { get; set; }
            = new LabelVisual
            {
                Text = "Title",
                TextSize=20,
                Paint = new SolidColorPaint(SKColors.Black)
            };
<lvc:CartesianChart Series="{Binding Series}" Title="{Binding Title}"/>

3c55945208c49108d7943b6634d38383.png

这里就有个问题,如果你的Title设置为中文,

public LabelVisual Title { get; set; }
            = new LabelVisual
            {
                Text = "标题",
                TextSize=20,
                Paint = new SolidColorPaint(SKColors.Black)
            };

就显示不出来了

6f17ea3cbbfe1a0d728825923dae423c.png

我们需要修改一下设定,以便支持中文显示。

public LabelVisual Title { get; set; }
            = new LabelVisual
            {
                Text = "标题",
                TextSize=20,
                Paint = new SolidColorPaint {
                    Color = SKColors.Black,
                    SKTypeface = SKFontManager.Default.MatchCharacter('汉')
                },
            };

9403c1ed732730a4e50f0d9d1a9273b3.png

官方文档非常丰富,也有对应的示例,做出来的结果还是非常不错的。

https://www.lvcharts.com/docs/WPF/2.0.0-beta.700/gallery

e501b3fd002ac47e9d79607129af1185.png

722daa7c63181435b92f855dc83d32e1.png

据说免费的LiveCharts在数据量超过10000渲染效果会不好,需要使用付费版。这个我还没有验证,读者可以自行尝试一下。

-

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,您需要引用LiveCharts库。可以通过NuGet包管理器安装LiveCharts.Wpf。 接下来,您需要在.xaml文件中添加Chart控件。例如: ``` <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf" Title="MainWindow" Height="350" Width="525"> <Grid> <lvc:CartesianChart Series="{Binding SeriesCollection}" LegendLocation="Right"/> </Grid> </Window> ``` 在.cs文件中,您需要创建SeriesCollection和ChartValues对象,并在接收到数据时将数据添加到ChartValues中。例如: ``` using LiveCharts; using LiveCharts.Wpf; using System.Collections.ObjectModel; public partial class MainWindow : Window { public SeriesCollection SeriesCollection { get; set; } public ObservableCollection<double> ChartValues { get; set; } public MainWindow() { InitializeComponent(); ChartValues = new ObservableCollection<double>(); SeriesCollection = new SeriesCollection { new LineSeries { Title = "Data", Values = ChartValues } }; DataContext = this; } // Method to add data to the chart private void AddData(double newData) { ChartValues.Add(newData); } } ``` 在接收到数据时,调用AddData方法,将数据添加到ChartValues中。当ChartValues更新时,LiveCharts会自动更新图表。例如: ``` private void OnDataReceived(object sender, DataReceivedEventArgs e) { double newData = Convert.ToDouble(e.Data); AddData(newData); } ``` 这样,您就可以使用LiveCharts实时显示曲线了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值