编辑
2025-09-25
C#
00

目录

摘要
正文

摘要

LiveCharts2是一个非常实用的图表库,可以用于各种应用场景,例如数据分析、可视化等等。它具有很多优点,例如:

  1. 简单易用:LiveCharts2提供了直观、简单的界面,用户可以很快上手,并且可以轻松地创建自己的图表。
  2. 灵活多样:LiveCharts2支持多种图表类型,包括线图、柱状图、饼图等等,用户可以根据自己的需求选择不同的类型。
  3. 交互性强:LiveCharts2提供了丰富的交互方式,例如悬停提示、点击交互等等,用户可以更加深入地探索图表的细节。
  4. 功能强大:LiveCharts2支持多种格式的数据源,例如JSON、XML、CSV等等,同时还提供了多种图表样式和配色方案,用户可以根据自己的需求进行自定义。

总的来说,LiveCharts2是一个非常实用的图表库,可以满足用户在数据可视化方面的各种需求。它的优点不仅在于简单易用,还在于灵活多样、交互性强和功能强大。

正文

看一下livechart可支持的开发,几乎是MS的所有平台下都可以用到它。

image.png

LiveCharts2 的优异性能源自其采用的多项优化技巧,如数据虚拟化、图形缓存、异步绘制等,可在大数据量下保持流畅的响应速度和渲染性能。此外,它还提供了丰富的文档和示例,方便开发者快速入手和使用。

image.png

image.png

image.png

打开 Visual Studio 2022,选择“创建新项目”,然后选择 Windows 窗体应用程序模板。

用Nuget安装LiveChart

这个版本在.net framework下支持,.net 6下不支持

image.png

.net 6下需要单独安装

现在最新版本通过Nuget命令安装

https://www.nuget.org/packages/LiveChartsCore.SkiaSharpView.WinForms 下载最新的版本

NuGet\Install-Package LiveChartsCore.SkiaSharpView.WinForms -Version 2.0.0-beta.860

image.png Tools中点击nuget package manager 中 console

image.png

  • Cartesian Chart Control 笛卡尔坐标图
  • Pie Chart Control 饼图
  • Polar Chart Control 极坐标图
  • Geo Map Control 地图
C#
using LiveChartsCore; using LiveChartsCore.SkiaSharpView; using LiveChartsCore.SkiaSharpView.Painting; using LiveChartsCore.SkiaSharpView.WinForms; using SkiaSharp; namespace livechart1 { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); //配制全局中文显示,不然会乱码 LiveCharts.Configure(x => { x.HasGlobalSKTypeface(SKFontManager.Default.MatchCharacter('汉')); }); } private void FrmMain_Load(object sender, EventArgs e) { cartesianChart1.LegendPosition = LiveChartsCore.Measure.LegendPosition.Right; cartesianChart1.Series = new ISeries[] { new LineSeries<double> { Name="成长", Values= new double[] { 1,2,3,4,5,6,7 }, Fill =new SolidColorPaint() { IsFill=true, Color=SkiaSharp.SKColor.Parse("#ff0000") }, }, }; } } }

image.png

MVVM绑定

CommunityToolkit.Mvvm.ComponentModel .NET 社区工具包的主要组件之一是 MVVM 工具包:一个现代、快速、平台无关的模块化 MVVM 库,也是 Microsoft Store、照片等应用使用的 MVVM 库。

image.png

ViewModel.cs

C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CommunityToolkit.Mvvm.ComponentModel; using LiveChartsCore; using LiveChartsCore.SkiaSharpView; using LiveChartsCore.SkiaSharpView.Painting; using SkiaSharp; namespace livechart1 { public class ViewModel : ObservableObject { public ISeries[] series { get; set; } = { new LineSeries<double> { Name="成长", Values= new double[] { 1,2,3,4,5,6,7 }, Fill =new SolidColorPaint() { IsFill=true, Color=SkiaSharp.SKColor.Parse("#ff0000") }, } }; } }

修改Form代码

C#
using LiveChartsCore; using LiveChartsCore.SkiaSharpView; using LiveChartsCore.SkiaSharpView.Painting; using LiveChartsCore.SkiaSharpView.WinForms; using SkiaSharp; namespace livechart1 { public partial class FrmMain : Form { ViewModel viewModel = new ViewModel(); public FrmMain() { InitializeComponent(); //配制全局中文显示,不然会乱码 LiveCharts.Configure(x => { x.HasGlobalSKTypeface(SKFontManager.Default.MatchCharacter('汉')); }); } private void FrmMain_Load(object sender, EventArgs e) { cartesianChart1.LegendPosition = LiveChartsCore.Measure.LegendPosition.Right; cartesianChart1.Series = viewModel.series; System.Timers.Timer timer = new System.Timers.Timer(); timer.Interval = 2000; timer.Elapsed += Timer_Elapsed; timer.Start(); } private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e) { List<double> points = viewModel.series[0].Values.Cast<double>().ToList(); Random random = new Random(); for (int i = 0; i < points.Count; i++) { points[i] = random.Next(2, 33); } viewModel.series[0].Values=points; } } }

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!