关于TeeChart使用我会持续更新
关于TeeChart使用我会持续更新
这篇文章中我是在Winform窗体使用TeeChart2011控件,通过定时器实现了实时绘制曲线图(三个序列)。
先上一下效果图:
1.TeeChart2011.ocx的注册
TeeChart2011.ocx下载地址
下载好TeeChart2011.ocx后,32位系统将其放在C:\WINDOWS\System32目录下,64位系统将其放在C:\WINDOWS\SysWOW64,在该目录下以管理员身份运行命令提示符(可以再该目录下找到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
版权声明:本文为博主原创文章,转载请附上博文链接!
关于TeeChart使用我会持续更新的更多相关文章
- 总结js常用函数和常用技巧(持续更新)
学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. PS:此文档,我会持续更新. Aj ...
- 私人网盘系统2.0—全部升级为layUI+PHP(持续更新中)shang
网盘系统2.0 上周,我做了第一版的“私人网盘系统”,http://www.cnblogs.com/sunlizheng/p/7822036.html 没看过的朋友可以去看一下,这周在家升级做了第 ...
- spring web 脚手架 (持续更新中...)
spring web 脚手架 项目地址: https://github.com/MengW9/scafflod.git 还有觉得哪些可以加上去的配置,欢迎各位拍砖,我会持续更新,大家共同进步 一个通用 ...
- 2020/1/29 PHP代码审计之进一步学习XSS【持续更新】
0x00 上午学习了XSS漏洞,中午吃饭想了想,还是思考的太浅层了,这种老生常谈的东西对于现在的我意义不大.现在我需要的是思考.于是就有了这个随笔.在本文中,我会持续更新一些XSS的深入思考,payl ...
- 4W字的后端面试知识点总结(持续更新)
点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...
- Unity 相关经典博客资源总结(持续更新)
就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: Unity官方脚本 点评:这个不用说了,最核心的内容,理解整个Unity引擎的方方面面,梳理结构. Unity ...
- 【转】Unity 相关经典博客资源总结(持续更新)
原文:http://blog.csdn.net/prothi/article/details/20123319 就作为一个记录吧,把平时看过的Unity相关的一些好的Blog记录并分享. 好的论坛: ...
- Vue.js2.0中的变化(持续更新中)
最近自己在学习Vue.js,在看一些课程的时候可能Vue更新太块了导致课程所讲知识和现在Vue的版本不符,从而报错,我会在以后的帖子持续更新Vue的变化与更新,大家也可以一起交流,共同监督学习! 1. ...
- Elasticsearch 思维导图集锦(持续更新...)
目录 引言 思维导图 全文搜索 Elastic 基础 Query DSL Multi Match Query 系列文章列表 参考 引言 本文主要是对 elasticsearch 的一些知识点使用思维导 ...
随机推荐
- 为什么预处理和参数化查询可以防止sql注入呢?
在传统的写法中,sql查询语句在程序中拼接,防注入(加斜杠)是在php中处理的,然后就发语句发送到mysql中,mysql其实没有太好的办法对传进来的语句判断哪些是正常的,哪些是恶意的,所以直接查询的 ...
- Flask学习【第4篇】:用Flask的扩展实现的简单的页面登录
from flask import Flask,render_template,request,redirect,session app = Flask(__name__,template_folde ...
- git 如何revert指定范围内的commit并且只生成一个新的commit?
答:一共分成两步 一. revert多个commit并生成多个新的commit git revert <old commit>^..<new commit> 二. 使用reba ...
- Java内存模型原理总结(转自51CTO)
转载地址:http://developer.51cto.com/art/201811/587220.htm [51CTO.com原创稿件]这篇文章主要介绍模型产生的问题背景,解决的问题,处理思路,相关 ...
- Elasticsearch-->Get Started--> Exploring Your Data
Exploring Your Data Sample Dataset Now that we’ve gotten a glimpse of the basics, let’s try to work ...
- pip运行错误
错误: [root@centos64 numpy-1.13.1]# pip install numpy-1.13.1-cp27-cp27m-manylinux1_x86_64.whl Tracebac ...
- HDU 4656 Evaluation(MTT)
题意 \(x_k=bc^{2k}+d\) \(\displaystyle F(x)=\sum_{i=0}^{n-1}a_ix^i\) 给定 \(\{a\},b,c,d,n\) ,求 \(F(x_0), ...
- Bytom猜谜合约使用指南
准备工作: 1.安装全节点钱包V1.0.5以上并同步完成: 2.已经发行一种资产,发行资产的方法具体见文章<如何在Bytom上发布资产?> 3.准备好一些BTM作为手续费: 设置谜语(锁定 ...
- Docker Engine SDKs and API 的开发1
Develop with Docker Engine SDKs and API Docker provides an API for interacting with the Docker daemo ...
- qt QRegExp使用(搬运工)
设置正则表达式. 类似下面的 QRegExp 这里的用法就是用来检测QString等字符串错误的,例如文件名里面最好就不出现<>|/\:等,所以可以如下定义QRegExp rx(" ...