当前位置: 首页 > news >正文

livecharts 装版本8

1   datagridview传datatable  livecharts传chartvalues<ObservablePoint>

datatable包含  Rows(内容是object【】)  和 Columns   字符串

chartvalues包含series线  AxisX x轴刻度设置  AxisY y轴刻度设置

动态刷表

using LiveCharts;
using LiveCharts.Defaults;
using LiveCharts.Wpf;
using System;
using System.Data;
using System.Windows.Forms;
using winform1.SQL;namespace winform1
{public partial class Form1 : Form{private MakePage MP;private SqlSugarHelper helper;private DataTable dt;private Random random;// 改用 ObservablePoint 存储 X-Y 数据public ChartValues<ObservablePoint> TimeValues { get; set; }public Form1(){InitializeComponent();MP = new MakePage();TimeValues = new ChartValues<ObservablePoint>();// 初始化定时器cartesianChart1.LegendLocation = LegendLocation.Right;Timer timer1 = new Timer();timer1.Tick += timer1_Tick;timer1.Interval = 1000; // 1秒刷新一次timer1.Start();}private void Form1_Load(object sender, EventArgs e){dataGridView1.DataSource = InitDt();random = new Random();// 配置折线图cartesianChart1.Series.Add(new LineSeries{Values = TimeValues,StrokeThickness = 4,PointGeometrySize = 10,DataLabels = true,Title = "模组实时温度",Fill = System.Windows.Media.Brushes.Yellow,Stroke = System.Windows.Media.Brushes.Red,});// 配置X轴(时间轴)cartesianChart1.AxisX.Add(new Axis{Title = "时间",LabelFormatter = value => new DateTime((long)value).ToString("HH:mm:ss"), // 时间格式化Separator = new Separator { Step = TimeSpan.FromSeconds(5).Ticks } // 每5秒一个刻度});// 配置Y轴cartesianChart1.AxisY.Add(new Axis{Title = "温度 (°C)",MinValue = 15,MaxValue = 35});// 添加初始数据AddNewDataPoint();}private void timer1_Tick(object sender, EventArgs e){AddNewDataPoint();// 限制数据点数量(保留最近20个)if (TimeValues.Count > 20){TimeValues.RemoveAt(0);}}private void AddNewDataPoint(){// X = 当前时间(DateTime转为Ticks长整型)// Y = 随机温度值TimeValues.Add(new ObservablePoint(DateTime.Now.Ticks,random.Next(20, 25)));}private DataTable InitDt(){helper = new SqlSugarHelper("datasource=E:\\sqlite-dll-win-x64-3490200\\winformtest.db", SqlSugar.DbType.Sqlite);dt = new DataTable("个人简历");dt.Columns.Add("ID", typeof(int));dt.Columns.Add("姓名", typeof(string));MP.refresh(helper, dt);return dt;}//下面为表格datagridviewprivate void simpleButton1_Click(object sender, EventArgs e){MP.PageIndex++;MP.refresh(helper, dt);}}
}

静态图

http://www.dtcms.com/a/282632.html

相关文章:

  • 预训练模型:大规模数据预学习范式——定义、原理与演进逻辑
  • CSS隐藏元素:display:none vs visibility:hidden
  • S7-200 SMART PLC:模拟量模块接线全解析
  • 新手向:自动化图片格式转换工具
  • PyCharm高效入门指南大纲
  • 如何在 Linux 上下载和安装 Conda/Miniconda
  • 基于 Docker 环境的 JupyterHub 详细部署手册
  • VR 污水厂初体验:颠覆传统认知​
  • 广州 VR 森林防火系统功能探究​
  • Harmony-Next鸿蒙实战开发项目-仿小米商城App----V2
  • DOM 规范中的 MutationObserver 接口
  • 【LeetCode 热题 100】543. 二叉树的直径——DFS
  • STM32 写选项字 关键要加载HAL_FLASH_OB_Launch
  • 红黑树、B树、B+树
  • 轻松将文件从 iPhone 传输到 Mac
  • 中医文化学习软件,传承国粹精华
  • Redis Key 设计原则
  • Excel转PDF的三种方法
  • 基于大数据的网络文学推荐分析系统的设计与实现【海量书籍、自动爬虫】
  • 《通信原理》学习笔记——第二章
  • AI进化论15:通用人工智能(AGI)的“终极梦想”与“潘多拉魔盒”
  • AI炒作,AGI或在2080年之前也无法实现,通用人工智能AGI面临幻灭
  • 基于 .Net Core+MySQL开发(WinForm)翻译平台
  • rLLM:用于LLM Agent RL后训练的创新框架
  • 前端面试题(React 与 Vue)
  • #Datawhale组队学习#7月-强化学习Task1
  • Java大厂面试实录:从电商场景到AI应用的深度技术考察
  • 如何通过域名白名单​OVP防盗链加密视频?
  • 【游戏引擎之路】登神长阶(十八):3天制作Galgame引擎《Galplayer》——无敌之道心
  • AJ Security:实用的 Java Web 安全库