C# 动态显示曲线

form窗体代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using System.Data.OleDb;
using System.IO;

namespace ShowCurve
{
    public partial class Form1 : Form
    {
        Thread thread;
        ShowCurve sc;
        
        public Form1()
        {
            InitializeComponent();
            #region axST_Curve初始化
            axST_Curve1.EnableHelpTip(false);//隐藏帮助信息
            axST_Curve1.EnablePreview(false);//隐藏全局预览窗口
            axST_Curve1.SetShowMode(128);//设置坐标显示模式
            axST_Curve1.SetHPrecision(0);//设置横坐标显示精度
            axST_Curve1.SetHInterval(2);//设置横坐标刻度值
            axST_Curve1.SetVPrecision(0);//设置纵坐标显示精度
            axST_Curve1.EnableZoom(true);
            #endregion
            sc = new ShowCurve();
            thread = new Thread(new ThreadStart(Run));
            thread.Start();
        }
        int pointCount=0;
        private void Run()
        {
            Pen p1 = new Pen(System.Drawing.Color.FromArgb(0, 255, 255));
            axST_Curve1.AddLegendHelper(11, "小车运行轨迹曲线", p1.Color.ToArgb(), 0, 1, false);
            sc.GetCurrentCurve();
            List<float> list1 = sc.getData1();
            List<float> list2 = sc.getData2();
            while (pointCount+1<list1.Count)
            {
                for (int i = pointCount; i <pointCount+ 1; i++)
                {
                    axST_Curve1.AddMainData2(11, list1[i], list2[i], 0, 0, true);
                    if ( i % 100 == 0 && i > 0 )
                    {
                        axST_Curve1.DelRange(11, 1000,0, 0,true, true);
                    }
                    axST_Curve1.SetValueStep(400f);
                    axST_Curve1.SetVInterval(5);
                    axST_Curve1.SetHInterval(20);
                    axST_Curve1.SetTimeSpan(400);//设置坐标间隔
                    axST_Curve1.SetBeginValue(-800);
                    axST_Curve1.SetBeginTime2(-800);
                    axST_Curve1.SetZoom(20);
                }
                axST_Curve1.Refresh();
                pointCount = pointCount + 1;
                Thread.Sleep(1000);
            }   
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            //在窗体即将关闭之前中止线程  
            thread.Abort();
        }  
        private void Form1_Load(object sender, EventArgs e)
        {

        }
        
    }
  
}

类ShowCurve.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;
using System.Drawing;
using System.Data.OleDb;
using AxST_CurveLib;

namespace ShowCurve
{
    class ShowCurve
    {
        List<float> list1 = new List<float>();
        List<float> list2 = new List<float>();
        public void GetCurrentCurve( )
        {
            //创建数据库字符串D:\小例子\ConsoleApplication1\FormRealTime\bin\Debug\data
            string constr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + Directory.GetCurrentDirectory() + "\\data\\db.accdb";
            //创建数据库连接
            using (OleDbConnection con = new OleDbConnection(constr))
            {
                //数据库语句
                string selectStr = "select x,y from XYData where epc='car1'";
                using (OleDbCommand cmd = new OleDbCommand(selectStr, con))
                {
                    //打开数据库
                    con.Open();
                    //读取数据
                    using (OleDbDataReader reader = cmd.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                list1.Add(reader.GetFloat(0));
                                list2.Add(reader.GetFloat(1));
                            }
                        }
                    }
                }
            }
         }
        public List<float> getData1()
        {
            return list1;
        }
        public List<float> getData2()
        {
            return list2;
        }
   }

}

利用的是第三方画图控件ST_Curve,下载地址是:http://www.st-curve.cn/。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值