zoukankan      html  css  js  c++  java
  • 关于TeeChart使用我会持续更新

    关于TeeChart使用我会持续更新
    这篇文章中我是在Winform窗体使用TeeChart2011控件,通过定时器实现了实时绘制曲线图(三个序列)。
    先上一下效果图:


    1.TeeChart2011.ocx的注册

    TeeChart2011.ocx下载地址
    下载好TeeChart2011.ocx后,32位系统将其放在C:WINDOWSSystem32目录下,64位系统将其放在C:WINDOWSSysWOW64,在该目录下以管理员身份运行命令提示符(可以再该目录下找到cmd.exe,以管理员身份运行即可),通过regsvr32命令注册该控件,我的64位系统,图示如下:

    注册成功会弹出以下提示:

    如果想要长期使用的话,注册前请将系统时间调至2000/1/1,注册后调回即可。
    如果注销该控件的话,可以通过regsvr32 -u指令。

    2.TeeChart控件的添加

    (1)新建一个WinForm窗体程序,左侧工具栏新建一个选项卡,直接将System32或SysWOW64目录下的TeeChart2011.ocx拖拽到创建的选项卡中即可。


    (2)拖拽一个TeeChart Pro Activex control到窗体上,拉伸到合适大小。
    现在我们需要了解一下TeeChart的基本知识
    a.axTChart:我们添加到窗体上的TeeChart控件。
    b.series:数据序列(实际上就是我们画出的一条曲线或一个其他图形)。
    c.axis:坐标轴(包含上下左右以及纵深轴,这里我们只用到底轴和左轴,即x轴和y轴)。
    d.AddSeries():向axTChart添加一个数据序列。
    e.AddXY():向Series添加一个点。

    3.绘制简单的曲线图

    有了这些知识我们就可以开始创建第一个曲线图了:

    private void Form1_Load(object sender, EventArgs e)
    {
    //添加数据序列,并设置绘图类型
    axTChart1.AddSeries(ESeriesClass.scFastLine);
    //设置底轴和左轴的最大值最小值
    axTChart1.Axis.Bottom.SetMinMax(0, 100);
    axTChart1.Axis.Left.SetMinMax(0, 20);
    //添加数据点
    for (int i = 0; i < 100; i++)
    {
    axTChart1.Series(0).AddXY(i, 0.15 * i, "", 0);
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13


    4.动态绘图

    根据以上内容,已经可以实现对已有数据一次性完成绘图,但是如果想要动态绘图,可以通过定时器来实现。代码如下。

    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    /// <summary>
    /// 200ms定时器
    /// </summary>
    System.Timers.Timer t = new System.Timers.Timer(200);
    /// <summary>
    /// 用于生成随机数
    /// </summary>
    Random rd = new Random();
    /// <summary>
    /// x坐标
    /// </summary>
    int point_X = 0;
    /// <summary>
    /// y坐标
    /// </summary>
    int point_Y = 0;

    private void Form1_Load(object sender, EventArgs e)
    {
    t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
    t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
    }

    /// <summary>
    /// 定时器触发绘图事件
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    private void theout(object source, System.Timers.ElapsedEventArgs e)
    {
    for (int i = 0; i < 3; i++)
    {
    //生成0-20中间的随机数
    point_Y = rd.Next(20);
    axTChart1.Series(i).AddXY(point_X, point_Y, "", 0);
    point_X++;
    }
    }

    private void btn_DrawPoints_Click(object sender, EventArgs e)
    {
    axTChart1.RemoveAllSeries();
    axTChart1.Axis.Bottom.SetMinMax(0, 100);
    axTChart1.Axis.Left.SetMinMax(0, 20);
    for (int i = 0; i < 3; i++)
    {
    //将series加载到TeeChart控件上
    axTChart1.AddSeries(ESeriesClass.scFastLine);

    }
    t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
    }

    }
    ---------------------
    作者:DurableHumor
    来源:CSDN
    原文:https://blog.csdn.net/my_clear_mind/article/details/79741020
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    基于AjaxHelper的企业门户网站构架示例
    重读GoF
    来一点反射,再来一点Emit —— 极度简化Entity!
    Component/Service Oriented Software System Development Thinking
    重新诠释AOP
    With AOP, Component Oriented == Object Oriented
    没有ORM或代码生成数据就不能持久化了? 用范型技术代替代码生成!
    Dalvik Debug Monitor Service(DDMS)的使用
    Android中的布局 Layout
    堆排序 Heap Sort
  • 原文地址:https://www.cnblogs.com/qiu18359243869/p/10533999.html
Copyright © 2011-2022 走看看