在vb中画曲线

上传人:xgs****56 文档编号:8975802 上传时间:2020-04-02 格式:DOC 页数:3 大小:82KB
返回 下载 相关 举报
在vb中画曲线_第1页
第1页 / 共3页
在vb中画曲线_第2页
第2页 / 共3页
在vb中画曲线_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述
在 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 DataFromComLast DataFromCom Randomize DataFromCom 3000 Rnd TimeCount TimeCount 1 DrawRealLine Pic TimeCount DataFromCom DataFromComLast 画出实时的曲 线 End Sub
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!