Winformmschart动态绑定X时间表

Winformmschart动态绑定X时间
效果图:
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using System.Threading;
//动态画图⽅式四曲线压缩模式
namespace Krypton440Test
{
public partial class Form2 : Form
{
static DateTime startTime = DateTime.Now.AddSeconds(-1);
DateTime endTime = startTime.AddSeconds(6);
DateTime kd = DateTime.Parse("00:00:01");
Random rd = new Random();      //随机函数,产⽣Y轴数据
DataTable dt = new DataTable(); //创建数据表,存储数据
int flag = 0;  //设置Timer控件是否⽣效
int i = 0;      //显⽰数据表中的数据⾏数
private void timer1_Tick(object sender, EventArgs e)
{
DataRow dr = dt.NewRow();
dr["XTime"] = DateTime.Now.ToString("HH:mm:ss");
dr["YTemp"] = rd.Next(-360, 360);
dt.Rows.Add(dr);
#region 折线图
mychart.DataSource = dt;//绑定数据
mychart.Series["Series1"].ChartType = SeriesChartType.Spline;//设置图表类型
mychart.Series["Series1"].IsValueShownAsLabel = false;//显⽰数据点的值队列队形变换
李冬民
mychart.Series["Series1"].BorderColor = Color.Green;
mychart.Series["Series1"].LegendText ="动态温度点";建设项目环境保护管理条例
mychart.Series["Series1"].MarkerStyle = MarkerStyle.Circle; //线条上的数据点标志类型
i = dt.Rows.Count - 1;
mychart.Series[0].Points.AddXY(Convert.ToDateTime(dt.Rows[i]["XTime"].ToString()).ToOADate(), Convert.ToDouble(dt.Rows[i]["YTemp"].ToString()));            //X轴设置
mychart.ChartAreas["ChartArea1"].AxisX.Title = "时间";//X轴标题
mychart.ChartAreas["ChartArea1"].AxisX.TitleAlignment = StringAlignment.Near;//设置X轴标题的名称所在位置位近
mychart.ChartAreas["ChartArea1"].AxisX.MajorTickMark.Enabled = true; //坐标轴上的刻度线
mychart.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = true;//不显⽰竖着的分割线彼得 德鲁克
mychart.ChartAreas["ChartArea1"].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;//主⽹格为虚线
mychart.ChartAreas["ChartArea1"].AxisX.LineColor = Color.Blue; //X轴颜⾊
梅甘 福克斯
//设置X轴字体类型、⼤⼩、颜⾊
/************************************************************************/
/
* 本⽂重点讲解时间格式的设置
* 但第⼀个点并不能保证在原点第⼀个时间坐标位置,与时间间隔跨度有关系
* 需要设置最⼩时间,最⼤⼩时,时间间隔类型,时间间隔值等四个参数,以保证当前⽹络跨度内容显⽰6个主⽹络线*/
/************************************************************************/
mychart.Series["Series1"].XValueType = ChartValueType.DateTime;    //X轴标签为时间类型
mychart.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "HH:mm:ss";  //X轴上显⽰时、分、秒
if (DateTime.Now.ToOADate() > endTime.ToOADate())
{
endTime = endTime.AddSeconds(6);//延长X时间轴
//设置时间单位的最⼩、最⼤值
//跨度为秒,间隔是通过最⼤时间与最⼩时间差相减除6所得,所以有6个间隔线
TimeSpan jianGe = endTime - startTime;
}
//Y轴设置
mychart.ChartAreas["ChartArea1"].AxisY.Title = "⽓温";//Y轴标题
mychart.ChartAreas["ChartArea1"].AxisY.TitleAlignment = StringAlignment.Far;//设置Y轴标题的名称所在位置位远
mychart.ChartAreas["ChartArea1"].AxisY.Interval = 200;
mychart.ChartAreas["ChartArea1"].AxisY.Maximum = 400;
mychart.ChartAreas["ChartArea1"].AxisY.Minimum = -400;
mychart.ChartAreas["ChartArea1"].AxisY.MajorTickMark.Enabled = false;//坐标轴上的刻度线,为false时少了⼩横杆线            mychart.ChartAreas["ChartArea1"].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
mychart.ChartAreas["ChartArea1"].AxisY.LineColor = Color.Blue;
#endregion
}
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
//清空原来数据缓存
mychart.Series["Series1"].Points.Clear();
//设置Chart⼤⼩
mychart.Width = Width - 100;
mychart.Height = Height - 100;
mychart.BackColor = Color.Azure;
dt.Columns.Add("XTime", System.Type.GetType("System.String"));
dt.Columns.Add("YTemp", System.Type.GetType("System.String"));
}
private void button1_Click(object sender, EventArgs e)
{
if (flag % 2 == 0)
{
sce
timer1.Enabled = false;
}
else
{
timer1.Enabled = true;
}
flag++;
}
}
}

本文发布于:2024-09-21 01:36:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/415850.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   设置   数据   间隔   类型   动态   标题   跨度
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议