


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在vb中画曲线 在工控制软件中,实时曲线的绘制用途非常的广泛,它可以很直观的显示出监控数据的变化值和变化趋势。在VB中实现曲线的绘制有很多种方法,本文介绍一种非常简单的方法来实现实时曲线的绘制。 在VB中实现实时曲线的绘制,要利用VB的PictureBox(图像)控件,和画线函数line(x1,y1)-(x2,y2)。PictureBox控件,可以作为一个“容器”,在它的里面可以包含很多的对象。也可以执行很多VB的内部函数。 要实现实时曲线的绘制,肯定要有外部实时数据的输入,这里假设是有一个数据从计算机的串口输入 定义该数据变量为DataFromCom。实时曲线反映的就是该数据。 打开VB6.0中文版,新建一个项目和窗体,修改窗体的属性,将“Heigh”修改为:8000,“Width”修改为在窗体中放如一个PictureBox控件。然后重新定义PictureBox控件的一些基本属性,在VB中选中PictureBox控件,直接在它的属性框中,修改一些属性参数。“名称”改为Pic。 “AutoRedraw”改为:True。“BackColor”改为:&H00004000&(墨绿色背景颜色)。”Heigh”改为:5000。“Width”改为:8000。如图1所示: 然后要重新定义PictureBox控件的坐标系。图像框的默认坐标系,是从左上角开始的,不符合我们的画线要求。修改坐标系的目的是让曲线从图像框的左边正中间,开始画线。修改图像框的坐标系,这里定义一个过程PicScale(),代码如下: Private Sub PicScale(picX As PictureBox) picX.Scale (0, PicX.ScaleHeight)-(picX.ScaleWidth, -PicX.ScaleHeight) End Sub 一般的实时曲线显示的时候在屏幕的正中间有一条基准线,这里也要画出这条基准线,用一个过程PicMidleLine()来实现,代码如下: Private Sub PicMidleLine( picX As PictureBox) picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen 画出中线 End Sub 要画一条实时曲线,坐标轴的设定很重要,在这里把X轴设定为时间轴,Y轴设定为数据轴。对应X轴我们定义一个时间变量TimeCount,TimeCount会随着时间逐渐递增,每次递增,对应着一个从串口读过来的数据DataFromCom,这样图像框中的(x,y)坐标点实际上就对应着(TimeCount,DataFromCom)如果只是当TimeCount发生变化时就在图像框上画一个点,就只需调用VB中的画像素的函数point(x,y),这里x,y为所画的点的坐标。单这样画出来的是一个个不连续的点。我们想要的是实时的连续的曲线,所以要调用VB中的画线的函数line(x1,y1)-(x2,y2),这里(x1,y1)(x2,y2)为所要画的线的起点和终点的坐标。只要把上次串口读过来的数据(这里把它定义为变量DataFromComLast)和现在串口读过来的数据(DataFromCom)和TimeCount相对应,调用line(x1,y1)-(x2,y2)函数就可以在图像框中画出实时的曲线了。把它写成一个过程如下面的代码: Private Sub DrawRealLine(picX As PictureBox, TimeCountX As Integer, DataFromComX As Integer, DataFromComLastX As Integer) If TimeCountX - 1 0 Then picX.Line (TimeCountX - 1, DataFromComLastX)-(TimeCountX, DataFromComX), vbWhite End If End Sub 有了三个过程就可以在图像框中画出一条实时的曲线了。 DrawRealLine()过程中的picX.Line (TimeCountX - 1, DataFromComLastX)-(TimeCountX, DataFromComX), vbWhite所画线的起始点和结束点都是以像素为单位的,这样以来如果不改变的话,画出来的线将是一个屏幕上像素相连的很密的曲线,通过调整line(x1,y1)-(x2,y2) 中的x的值,就可以画出分布密度不一样的曲线,这里为了在屏幕上能够看到不是很密的曲线我们把x乘以一个系数10,修改为: picX.Line (TimeCountX - 1) * 10, DataFromComLastX)-(TimeCountX * 10, DataFromComX), vbWhite 这比较容易在屏幕上看到稀疏的曲线。 由于是仅仅讲解如何画出实时的曲线,读者的计算机上未必有和串口相连的设备,这里用一个定时器控件来模拟从串口读过来的数据。在窗体上放入一个Timer控件,修改Timer控件的属性为:“Enable”该为True,“Interval”改为300。双击Timer控件在它的过程中,添加代码后如下: Private Sub Timer1_Timer() DataFromComLast = DataFromCom Randomize DataFromCom = 3000 * Rnd TimeCount = TimeCount + 1 DrawRealLine Pic, TimeCount, DataFromCom, DataFromComLast End Sub 这样在运行后就可以看到我们想要的实时曲线了,如下图: 图 2 下面是完整的代码: Option Explicit Dim DataFromCom As Integer 从串口读过来的实时值 Dim DataFromComLast As Integer 上次的串口值 Dim TimeCount As Integer Private Sub Form_Load() PicScale Pic 调整图像框的坐标系 PicMidleLine Pic 在图像框中画一条中线 End Sub Private Sub PicScale(picX As PictureBox) 调整图像框的坐标系 picX.Scale (0, picX.ScaleHeight)-(picX.ScaleWidth, -picX.ScaleHeight) End Sub Private Sub PicMidleLine(picX As PictureBox) 在图像框中画一条中线 picX.Line (0, 0)-(picX.ScaleWidth, 0), vbGreen 画出中线 End Sub Private Sub DrawRealLine(picX As PictureBox, TimeCountX As Integer, DataFromComX As Integer, DataFromComLastX As Integer) If TimeCountX - 1 0 Then picX.Line (TimeCountX - 1) * 10, DataFromComLastX)-(TimeCountX * 10, DataFromComX), vbWhite End If End Sub Private Sub Timer1_Timer()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京联合大学招聘21人(第二批)考试备考题库及答案解析
- 2025广东广州市花都区赤坭镇华南小学招聘英语教师1人笔试模拟试题及答案解析
- 2025西安工业大学某项目科研助理招聘笔试参考题库附答案解析
- 2025江西吉安县敦城人力资源服务有限公司招聘吉安县机关事务中心驾驶员2人笔试参考题库附答案解析
- 2025年山东能源集团营销贸易有限公司所属企业社会招聘(12人)考试模拟试题及答案解析
- 2025东方航空校园招聘笔试模拟试题及答案解析
- 2025贵州观山湖区第十八幼儿园秋季学期招聘临聘教师笔试模拟试题及答案解析
- 2025广东肇庆市广宁县事业单位招聘96人(教师16人)考试备考试题及答案解析
- 2025四川内江市总工会招聘工会社会工作者14人考试模拟试题及答案解析
- 阿坝州检察系统2025年公开招聘聘用制书记员(11人)笔试参考题库附答案解析
- 临床护理带教新思路
- 韦莱韬悦-东方明珠新媒体职位职级体系咨询项目建议书-2017
- 中国心力衰竭诊断和治疗指南2024解读(完整版)
- 八上外研版英语书单词表
- 高标准农田建设项目施工合同
- 腹内高压综合征
- 识别界限 拒绝性骚扰 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- 2024年秋季新人教版八年级上册物理全册教案(2024年新教材)
- 污水处理托管服务 投标方案(技术方案)
- 压疮护理质量改进一等奖(有稿)
- 深基坑施工验收要求
评论
0/150
提交评论