VB环境中绘制数据曲线图
vb的chart用法

vb的chart用法一、概述VB是一种常用的编程语言,其内置了图表控件,可以方便地创建各种图表。
Chart控件可用于数据可视化,展示数据之间的关系和趋势。
本篇文档将介绍VB中Chart控件的用法。
二、Chart控件的属性1. Chart对象:Chart控件的根对象,代表整个图表。
2. ChartType:设置图表类型,如柱形图、折线图、饼图等。
3. ChartTitle:设置图表标题。
4. Series1~SeriesN:设置系列数据,用于绘制图表。
5. XAxisTitle、YAxisTitle:设置X轴和Y轴的标题。
6. Legend:设置图例的位置和显示方式。
7. PlotValues:绘制数据点或趋势线。
三、Chart控件的方法1. AddSeries方法:添加系列数据。
2. Series.DataLabels.Show方法:显示数据标签。
3. Series.MarkerStyle属性:设置标记样式。
4. Chart.Export方法:导出图表为图片或PDF文件。
5. Chart.Refresh方法:刷新图表数据。
四、使用Chart控件的步骤1. 添加Chart控件到窗体中。
2. 设置Chart对象的属性,如ChartType、XAxisTitle、YAxisTitle等。
3. 添加系列数据,可以使用DataGridView或数据库等数据源获取数据。
4. 调用AddSeries方法添加系列数据,并设置系列名称和颜色等属性。
5. 绘制数据点或趋势线,可以使用PlotValues属性。
6. 保存或导出图表,可以使用Chart对象的Export方法。
五、示例代码以下是一个简单的VB代码示例,展示如何使用Chart控件绘制柱形图:```vbPrivate Sub Form_Load()' 创建Chart对象Dim chart As New Chart' 设置Chart对象的属性chart.ChartType = xlBarClustered ' 设置图表类型为柱形图chart.Title.Text = "柱形图示例" ' 设置标题' 添加系列数据Dim series As New Series = "销售业绩" ' 设置系列名称series.DataSource = DataGridView1 ' 使用DataGridView 获取数据源chart.SeriesCollection.Add(series) ' 添加系列数据到Chart对象中' 显示图表chart_Paint(chart) ' 在窗体上绘制图表End SubPrivate Sub chart_Paint(ByVal chart As Object)' 绘制图表数据chart.PlotValues = "X,Y" ' 绘制数据点,X为横坐标,Y 为纵坐标值End Sub```以上代码示例展示了如何使用Chart控件创建一个简单的柱形图,并使用DataGridView作为数据源。
如何在VB下生成实时的数据采集曲线?

如何在VB下生成实时的数据采集曲线?
吴东生
【期刊名称】《软件》
【年(卷),期】2003(000)011
【摘要】在笔者参与的开发的机组轴瓦控制系统中.要求能够实时采集轴瓦转动速度值V.并能根据实时采集到的数据绘制出V在10分钟内变化的短期趋势图和一日内变化的长期趋势图.以便观测轴瓦转动的情况.查看控制效果。
该系统在VB6.0环境下进行开发.开始时采用了VB包含的Activex控件技术绘制曲线.在效果不理想的情况下.笔者利用VB绘画函数.最终
【总页数】2页(P45-46)
【作者】吴东生
【作者单位】无
【正文语种】中文
【中图分类】TP311
【相关文献】
1.基于VB和单片机下实时显示的温度曲线 [J], 赵海兰;吴静霞
2.VB环境下基于PCI总线的实时数据采集的实现 [J], 刘继承;宋万广;刘春侠
3.Windows95下利用VB实现实时数据采集 [J], 曲洪权;关学忠;曾凡军;车燕娜
4.Delphi环境下控制系统实时数据采集曲线的绘制与打印 [J], 马淑华;赵一丁;等
5.如何在VB环境下实现数据采集 [J], 宋永强
因版权原因,仅展示原文概要,查看原文内容请购买。
VB(5.1)绘制正弦曲线

第7章目录
Form1.ScaleLeft = -14 Form1.ScaleTop = 14 Form1.ScaleWidth = 28 Form1.ScaleHeight = -28 ScaleTop、ScaleLeft的值用于指定对象左上角坐标,缺省值为0, 坐标原点在对象的左上角, 当改变ScaleLeft、ScaleTop的值后,坐标系的X轴或Y轴按此值平 移形成新的坐标原点。 对象右下角坐标为 (ScaleLeft+ScaleWidth,ScaleTop+ ScaleHeight)
第7章目录
如果省去起点,表明从当前点到终点的一条线
参数B表示画矩形 ,此时若有参数F,表示用线条的颜色填充矩形 ,
若无参数,则矩形用当前的fillcolor和fillstyle
13/9
汝南县职业教育中心
任务1 绘制正弦曲线
3、 PSet和Line语句 (2) Line方法 Step表示相对坐标关系 缺省Step 表示绝对坐标 Line [Step] (X1, Y1) -
11/9
End Sub
汝南县职业教育中心
任务1 绘制正弦曲线
3、 PSet和Line语句 (1) PSet方法
作用:是在窗体、图片框等对象上绘制一个点。
语法格式为: [<对象名>].PSet [Step] (x, y) [,<颜色>]
例:Picture1.PSet (X, Sin(X) * 5), QBColor(12)
谢谢
汝南县职业教育中心
ScaleWidth,ScaleHeight指对象的内部尺寸,不包括边框厚度以及 菜单或标题等高度
10/9
汝南县职业教育中心
vba 蝴蝶曲线

vba 蝴蝶曲线蝴蝶曲线(Butterfly Curve)是一个具有对称性的数学曲线,由雅可比椭圆函数定义。
以下是一个使用VBA绘制蝴蝶曲线的示例代码:```vbaSub DrawButterflyCurve()Dim t As DoubleDim x As Double, y As DoubleDim scale As Double' 设置绘图缩放比例scale = 50' 清除绘图区域ActiveSheet.DrawingObjects.Delete' 初始化起始点t = 0x = scale * Sin(t) * (Exp(Cos(t)) - 2 * Cos(4 * t) - Sin(t / 12) ^ 5) y = scale * Cos(t) * (Exp(Cos(t)) - 2 * Cos(4 * t) - Sin(t / 12) ^ 5)' 绘制曲线With ActiveSheet.Shapes.AddShape(msoShapeCurve, x, y, 1, 1) .SelectDo' 计算下一个点的坐标t = t + 0.01x = scale * Sin(t) * (Exp(Cos(t)) - 2 * Cos(4 * t) - Sin(t / 12)^ 5)y = scale * Cos(t) * (Exp(Cos(t)) - 2 * Cos(4 * t) - Sin(t / 12) ^ 5)' 添加线段.Nodes.Add(x, y)Loop While t < 12 * 3.14159265End With' 调整曲线的样式With Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0) ' 设置线条颜色为红色.Weight = 2 ' 设置线条粗细为2End WithEnd Sub```要执行此代码,请打开Excel并按下ALT + F11打开VBA编辑器。
vb控制autocad画样条曲线

Dim Acadapp As AcadApplication 'AutoCAD 的application对象Dim acadDoc As Object 'AutoCAD document对象Dim moSpace As Object 'Modelspace 模型空间对象集合Dim paSpace As Object 'PaperSace 图纸空间对象集合Dim splineObj As AcadSplineDim points() As DoubleDim startTan() As DoubleDim endTan() As DoubleDim cnn As New ADODB.ConnectionDim rst As New ADODB.RecordsetDim cmd As mandDim MyConnDim sql As StringDim TabName() As String画样条曲线Private Sub cmdDrawSpline_Click()Dim recordN As LongDim FieldN As IntegerDim Line1 As ObjectDim aa As Long'曲线FieldN = rst.Fields.CountrecordN = rst.RecordCount'下面的循环保证定义的points为3的倍数Do While (recordN * 2 Mod 3) <> 0recordN = recordN - 1LoopReDim points(recordN * 2 - 1)ReDim startTan(0 To 2)ReDim endTan(0 To 2)startTan(0) = 0: startTan(1) = 0: startTan(2) = 0endTan(0) = 0: endTan(1) = 0: endTan(2) = 0For j = 1 To FieldN - 5 '减去5是纵坐标第⑤个字段及后面的数据For i = 1 To recordN Step 2points(i - 1) = rst.Fields(1)points(i) = rst.Fields(j + 4)rst.MoveNextNextDrawSpline points, startTan, endTanrst.MoveFirstNextsplineObj.Color = acRedsplineObj.UpdateEnd Sub连接AcadPrivate Sub cmdOpenAcad_Click()On Error Resume NextSet Acadapp = GetObject(, "autocad.application") '连接CADIf Err ThenErr.ClearSet Acadapp = CreateObject("autocad.application") '如果CAD没有打开则打开新的cadIf Err ThenMsgBox Err.Description '如果cad打开失败显示错误信息Exit SubEnd IfEnd IfAcadapp.Visible = TrueEnd SubPrivate Sub cmdOpenMdb_Click()'创建对数据库的连接Dim i As IntegerSet cnn = New ADODB.ConnectionMyConn = "E:\data.mdb"With cnn.Provider = "Microsoft.Jet.OLEDB.4.0".Open MyConnEnd WithSet rst = cnn.OpenSchema(20)ReDim TabName(1)Do Until rst.EOFIf UCase(rst("TABLE_TYPE")) = "TABLE" Theni = UBound(TabName)TabName(i) = rst("TABLE_NAME")ReDim Preserve TabName(UBound(TabName) + 1) End Ifrst.MoveNextLoopFor i = 1 To UBound(TabName)cmbTab.AddItem TabName(i)NextcmbTab.ListIndex = 1End Sub打开指定工作表Private Sub cmdOpenTab_Click()Dim tbSet rst = New ADODB.Recordset'rst.Source =tb = Trim(cmbTab.Text)rst.CursorLocation = adUseClientrst.Open tb, cnn, _adOpenDynamic, adLockOptimistic, _adCmdTableSet DataGrid1.DataSource = rstDataGrid1.RefreshEnd SubPrivate Sub Command1_Click()Set Preference = Acadapp.PreferencesSet acadDoc = Acadapp.ActiveDocumentSet moSpace = acadDoc.ModelSpaceSet paSpace = acadDoc.PaperSpace'坐标系Dim point1(0 To 2) As DoubleDim point2(0 To 2) As Doublepoint1(0) = 90: point1(1) = 0: point1(2) = 0point2(0) = -90: point2(1) = 0: point2(2) = 0Set Line1 = moSpace.AddLine(point1, point2)Dim Line2 As ObjectDim point3(0 To 2) As DoubleDim point4(0 To 2) As Doublepoint3(0) = 0: point3(1) = 90: point3(2) = 0point4(0) = 0: point4(1) = 0: point4(2) = 0Set Line2 = moSpace.AddLine(point3, point4)'曲线End SubPublic Sub OpenCadDwg(MyFileName As String)If Dir(MyFileName) <> "" ThenAcadapp.Documents.Open MyFileNameelsseMsgBox ("文件" & MyFileName & "不存在")End IfEnd SubPublic Sub DrawSpline(ByRef fitPnts() As Double, ByRef sTan() As Double, ByRef eTan() As Double)'假设画一条有三个拟合点的样条曲线'声明样条曲线'Dim SP As AcadSpline'声明样条曲线拟合点坐标数组'拟合点坐标必须是WCS的三维坐标,每个点的坐标需要数组中三个元素,三个点共九个元素'Dim fitPnts(8) As Double'声明起点切向数组'切向是矢量,由X方向Y方向Z方向组成,也就是说这是一个有三个元素的双精度数组'三个元素的数值可以这样得到:以切线起点为WCS坐标原点,这个切线在XYZ三个坐标轴上的投影就是这个数组的三个值'声明端点切向数组'和上面的起点切向相似'Dim eTan(2) As Double'样条曲线的第一个点'fitPnts(0) = 10: fitPnts(1) = 10: fitPnts(2) = 0'样条曲线的第二个点'fitPnts(3) = 20: fitPnts(4) = 10: fitPnts(5) = 0'样条曲线的第三个点'fitPnts(6) = 20: fitPnts(7) = 20: fitPnts(8) = 0'假定样条曲线的起点方向为水平向右'需要注意的是:VBA中的样条曲线起点切向与画图时不同.画图时起点切向与曲线方向是相反的,而编程时是同方向的'设切线长度为1,水平向右的切线其X分量为1,Y分量为0,Z分量也为0'sTan(0) = 1: sTan(1) = 0: sTan(2) = 0'假定样条曲线的终点方向为135度方向'设切线长度为1,135度方向切线的X分量为负二分之根号二,Y分量为二分之根号二,Z 分量为0'eTan(0) = -Sqr(2) / 2: eTan(1) = Sqr(2) / 2: eTan(2) = 0'如果起点切向或端点切向的三个元素均为0,则切线方向为默认方向'画曲线Set splineObj = Acadapp.ActiveDocument.ModelSpace.AddSpline(fitPnts, sTan, eTan)End SubPrivate Sub Command2_Click()' 关闭连接并清理内存rst.Closecnn.CloseSet rst = NothingSet cnn = NothingEnd Sub。
基于VB的实时数据趋势曲线的实现

基于VB的实时数据趋势曲线的实现作者:张春艳,葛明明,汤海凤来源:《电脑知识与技术》2011年第19期摘要:针对国内现有的组态软件存在组态画面比较单调,且组态完的监控软件需要购买软件狗而涉及到的成本问题等实际状况,在分析了现有工业监控系统中监测数据的实时变化趋势的理论基础上,本文提出了基于VB 6.0软件编程实现监测数据实时趋势曲线的绘制方法,结合本校实验室的实际情况,在工业监控系统中的分析数据趋势变化方面取得了很好的成果。
关键词:VB;实时数据;趋势曲线中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)19-4614-04Realizing Drawing Real-time Trend Curve on VBZHANG Chun-yan,GE Ming-ming,TANG Hai-feng(Biochemical Engineering College, Beijing Union University, Beijing 100023, China)Abstract: In domestic, the Configuration software is rather monotonous in the existence of the configuration screen, and after configuring the software, we need to purchase the dog of software. Based on analyzing the theory of the monitoring data's real-time trends in the industrial testing and controlling system, this article introduces the program of drawing the real-time trend curve with VB. With the actual situation in our laboratory, there is a good result in industrial monitoring and control system analysis of data trends.Key words: VB; real-time data; trend curve工业控制系统软件中,常常需要实时的将监测对象的数据趋势曲线显示出来,以便于操作人员观测,及时发现问题并解决问题。
VB中实时曲线的显示
VB中实时曲线的显示在使用VB开发工控软件(HMI)时,经常需要对工艺参数进行趋势曲线的显示,这通常需要使用控件来实现,自然有第三方提供的控件,但那是需要付费的,并且有的使用情况并不理想,自己开发的话又差强人意,这里提供一个实时曲线显示的程序,给大家以启发。
通过对程序的修改,可以很方便的应用到实际工程中去。
首先建立一个名为DrawLine的类模块,代码如下:Public HorzSplits As LongPublic VertSplits As LongPublic Max As SinglePrivate ValueArray() As Single '存放数据的数组Private LineColor As LongPrivate GridColor As LongPrivate ShowGrid As BooleanPrivate pBox As PictureBoxPrivate pBoxHeight As LongPrivate pBoxWidth As LongPrivate MovingGrid As BooleanPrivate StartPosition As LongPrivate GridPosition As LongPublic Enum DrawLineTypeTYPE_LINE = 0TYPE_POINT = 1End EnumPublic LineType As DrawLineType '划线的类型:线或点Const const_tolerance = 0.0001 '误差Public Function InitDrawLine(pB As PictureBox, LColor As Long, SGrid As Boolean, Optional GColor As Variant, Optional MoveGrid As V ariant)pB.ScaleMode = vbPixelsLineColor = LcolorShowGrid = SgridpBoxHeight = pB.ScaleHeightpBoxWidth = pB.ScaleWidthIf IsMissing(GColor) ThenGridColor = RGB(0, 130, 0) '默认值绿色Else:GridColor = GcolorEnd IfIf IsMissing(MoveGrid) ThenMovingGrid = False '如果用户未定MoveGrid值则默认为关。
基于VB的实时数据趋势曲线的实现
摘 要 : 对 国 内现 有 的组 态软 件 存在 组 态 画 面 比较 单 调 , 组 态 完 的 监控 软件 需要 购 买软 件 狗 且 在 分析 了现 有 工 业 监控 系统 中监 测 数 据 的 实 时 变化 趋 势 的理 论 基 础 上 . 文提 出 了基 于 V . 件 编 程 实现 监 测 数 据 实时 趋 势 曲 线 本 B6 0软 的绘 制 方 法 , 结合 本校 实验 室 的 实 际情 况 . 工 业监 控 系统 中的 分析 数 据 趋 势 变化 方 面 取得 了很 好 的 成 果 。 在
1实 时 趋 势 曲 线 及 设 计 原 理
趋 势 显 示 是 用 于 显示 被 测 、 控 变量 , 定值 和输 出值 等模 拟量 的变 化趋 势 , 被 设 以便 操 作 人 员 了 解 被 测 、 被控 变量 的变 化 , 而 有 从 利 于对 过 程 的分 析 和研 究 。实 时 趋 势显 示 就 是 将 每 一 个 采 样 时 刻和 采 集 数 据 都 显示 在 趋 势 显 示 画 面 的 一种 趋 势 显 示 。实 时趋 势 曲 线 反 映 的是 现 场 数 据 的实 时 性 , 以监 测 该 被 测 点 在 现 场 实 际变 化 的情 况 下 的 控 制稳 定 性 . 因此 在 实 现 中需 显 示 曲线 的动 态 变 化 。 无 线 测 控 软 件 的设 计 原 理 是 通 过 无 线 接 收设 备 将 下 位 机 传 感 器 端 的 数据 读取 到 上 位机 的数 据库 中存 储 , 时 上 位 机 将 读 到 的 同 最新 数据 以 曲线 的 形 式 实 时地 显 示 。本 文 采 用 基 本 的绘 图方 法 —— 1 e 法 绘 制 实 时 曲线 , 常 l e方法 只 能绘 制 静 态 曲线 , 是 i 方 n 通 i n 但
VBA中的数据箱线图绘制与异常值处理技巧
VBA中的数据箱线图绘制与异常值处理技巧数据分析是现代社会中重要的工作之一,通过对数据的分析,可以揭示数据中的规律和趋势,帮助做出合理的决策。
而箱线图是一种常用的数据可视化工具,用于展示数据的分布和异常值。
在VBA中,我们可以利用各种函数和技巧来生成数据的箱线图,并通过一些方法处理异常值。
本文将从绘制数据箱线图和处理异常值两个方面介绍一些实用的VBA技巧。
1. 数据箱线图的绘制箱线图由五个关键元素组成,分别是最小值、下四分位数、中位数、上四分位数和最大值。
在VBA中,我们可以通过以下步骤来绘制数据箱线图:步骤1:准备数据首先,需要准备好要绘制箱线图的数据。
可以将数据存储在一维数组或一列数据的范围内。
假设我们有一列数据存在“A1:A10”单元格内。
步骤2:计算关键参数利用VBA的内置函数,我们可以方便地计算出最小值、下四分位数、中位数、上四分位数和最大值。
可以使用MIN、MEDIAN和MAX函数来计算这些参数。
步骤3:绘制箱线图在生成箱线图之前,需要创建一个新的图表对象,并添加一个散点图。
可以使用VBA中的“ChartObjects.Add”方法来创建一个新的图表对象。
接下来,可以使用VBA中的“Range”对象来获取数据的范围,然后将其分配给散点图的X轴和Y轴。
最后,使用VBA中的“Chart”对象来设置散点图的样式,如图表的标题、轴标签、图例等。
可以使用“Chart.Title”、“Chart.Axes”等属性和方法来设置这些样式。
2. 异常值的处理技巧异常值是指与大部分数据差异显著的数值,可能会对数据分析和决策产生重大影响。
在处理异常值时,可以采用以下技巧:技巧1:识别异常值利用箱线图的上下四分位数和最大最小值,可以确定数据中的异常值。
通常,根据异常值的定义,可以将超出上下四分位数1.5倍IQR (上四分位数与下四分位数之差)的数值视为异常值。
可以通过计算IQR和四分位数等参数来识别箱线图中的异常值。
VB6的绘图方法与常用函数
VB6的绘图方法与常用函数在VB6中,绘图是一项非常常见的操作。
它可以用于创建图形界面元素、绘制图表、设计游戏界面等各种应用场景。
本文将介绍VB6中的绘图方法和常用函数,以帮助您更好地理解和应用该技术。
绘图方法绘制直线在VB6中,可以使用Line函数绘制直线。
它的语法如下:Line (x1, y1)-(x2, y2), [color], [B]•(x1, y1)和(x2, y2)是直线的起点和终点坐标;•color是可选参数,用于指定直线的颜色;•B是可选参数,用于指定是否绘制虚线。
以下是一个示例:Private Sub Form_Pnt()Line (100, 100)-(200, 200), RGB(255, 0, 0), BFEnd Sub绘制矩形在VB6中,可以使用Rectangle函数绘制矩形。
它的语法如下:Rectangle (x1, y1)-(x2, y2), [color], [B], [BF]•(x1, y1)和(x2, y2)是矩形的左上角和右下角坐标;•color是可选参数,用于指定矩形的边框颜色;•B是可选参数,用于指定是否绘制虚线;•BF是可选参数,用于指定是否填充矩形内部。
以下是一个示例:Private Sub Form_Pnt()Rectangle (100, 100)-(200, 200), RGB(0, 255, 0), B,BFEnd Sub绘制圆形在VB6中,可以使用Circle函数绘制圆形。
它的语法如下:Circle (x, y), radius, [color], [B], [BF]•(x, y)是圆心的坐标;•radius是圆的半径;•color是可选参数,用于指定圆的颜色;•B是可选参数,用于指定是否绘制虚线;•BF是可选参数,用于指定是否填充圆的内部。
以下是一个示例:Private Sub Form_Pnt()Circle (150, 150), 50, RGB(0, 0, 255), , BFEnd Sub在VB6中,可以使用Ellipse函数绘制椭圆。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB环境中绘制数据曲线图
摘要:为了更好地为汛期气象服务提供有力的资料补充和保障,截至2010年
底,通辽市气象局已建成区域自动气象站35个。为使区域自动站在决策服务、预
报预警调查等方面所提供的资料更加直观,本文介绍了利用Visual Basic软件编
写程序,实现数据曲线绘制的方法和过程,VB6.0 提供了PictureBox 控件,利用
该控件的属性和方法,可以把实时数据用曲线图的形式表达出来。
关键词: VB6.0实时数据曲线区域自动气象站
在区域自动气象站中,当数据采集存储完成后,往往需要更直观的界面显示。
利用VB6.0 编程实现实时数据曲线的绘制与显示,可动态地监视某些关键气象
要素值的变化情况与走向趋势,以便直观、便捷的进行分析来更好地做好气象服
务工作。基于以上的需求分析,将系统划分为4大功能模块。
1、数据库的连接。该项需要实现与数据库的连接,在设置中,用户可以直接选
择自己所在地的市局服务器。以后进行的操作中将从所选服务器中进行气象要素
数据的读取。VB6.0实现SQLServer2000数据库的连接与断开的代码格式为:
连接代码:
Set conn=New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open “Driver={SQL Server};Server=服务器IP或服务器名称;Database=
数据库名称;Uid=用户名;Pwd=密码”
断开代码:
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
2、数据库内容的读取。要把本辖区所有区域站数据逐一统计,在VB6.0的
编程中要用到循环语句,例如要查询温度数据,我市现在数据库中存放的温度数
据是小时数据,例如要查询单一站点某时间段内的温度数据,本文中是通过select
语句来实现的,主要语句描述为:select * from 表名 where station=‘“ & 区站号
&”‘and observetime between’” & 开始时间 & “‘and’” & 结束时间 &”‘“。可以根
据查询的需要来编写不同的select语句实现各种查询功能。统计出站点温度数据
后,将数据库中读出的数据存入数组,画数据曲线时直接读取数组中内容即可。
3、实时数据曲线的绘制过程。选择PictureBox 作为绘制实时曲线的容器,
实时数据曲线是数据轴和时间轴的关系曲线,反映实时数据的大小,并随时间变
化实时更新。采用Line 方法将各数据点绘制成首尾相接的直线,就可实现数据
曲线的绘制。一屏数据显示完后,使用PictureBox 的CLS 方法,自动清屏,重
新绘制曲线,即可实现数据曲线的连续显示问题。通常当前点在曲线的最右端显
示,当数据曲线到达图片框的右边缘时,整个曲线动态地向左移动。对于显示较
长的数据曲线可添加水平滚动条控件,通过滚动条来查看数据曲线的其它部分。
要实现实时数据曲线的绘制,首先应进行数据读取,借助Timer 控件,定期读
取数据库中的数据,定时器定时时间到,触发定时器事件,进行数据读取,具体
实现过程如下:
(1)设置界面并重新建立坐标系。在VB6.0中新建一个工程,在窗体中添
加PictureBox 控件。修改PictureBox 的一些属性参数, 其中必须将PictureBox
的autoredraw 属性设置成True,才可以在图片框内绘制曲线。然后添加Timer 控
件及其它所需控件,界面就基本设置好了。图片框的默认坐标系,是以其左上角
为坐标原点的,不符合我们的画线要求。修改坐标系,让曲线从图像框的左边正
中间开始画线。这里采用Scale 方法在PictureBox 中建立合适的坐标系,其语
法如下:Picture1.scale(x1,y1)-(x2,y2)
其中(x1,y1)为PictureBox 的左上角坐标,(x2,y2)为右下角坐标。根据实际需
要的数据范围确定左上角和右下角的坐标值,得到合适的坐标系。用一个过程
PicScale ()来实现:
Private Sub PicScale (mypicX As PictureBox)
mypicX.Scale(0, mypicX.ScaleHeight)-( mypicX.ScaleWidth,
-mypicX.ScaleHeight)
End Sub
一般可在曲线图的中间设置一条基准线,这里用一个过程PicMidLine()来实
现:
Private Sub PicMidLine (mypicX As PictureBox)
mypicX.Line(0,0)-(mypicX.ScaleWidth,0) ‘ 画基准线
End Sub
根据读取数据及采样时间绘制实时数据曲线。为了降低绘图的复杂性,并能
控制图片背景,可利用shape 控件,选取该控件的矩形作为绘图范围,以矩形的
左边线为纵坐标,下边线为横坐标。用line 方法绘制坐标系中的网格线,并标
记好刻度,界面将更为美观且读数方便。
(2)采用line 方法绘制曲线。用VB6.0 提供的line 方法, 在PictureBox
中画出连续的实时曲线。使用line 方法的语法格式如下:
Picture1.line(x1,y1)-(x2,y2)
其中(x1,y1)为所画曲线的起点坐标,(x2,y2)为终点坐标。定义好变量,在
PictureBox 中将此次读取的数据点与上次读取的数据点用Line 方法连起来。程
序主要代码如下:
For j=1 To num-1
X1=(j-1):Y1=data (j-1)
X2=j
Y2=data (j)
Picture1.Line(X1,Y1)-(X2,Y2)
Next j
4、图片保存模块。此模块也是不可缺少的, 因为结果的分析、交流、显示
都离不开这些图片。利用CommonDialog控件完成此功能, 主要代码如下:
CommonDialog1. Filter = “ BMP Files( *.BMP)|*.BMP|All Files( * . * )
|* . * “
CommonDialog1.ShowSave
If CommonDialog1.FileName ““ Then
SavePicture Picture1.Image, FileNames
End If
图片的保存格式可以根据实际情况进行增加、修改。这里只给了位图格式示
意。
3.结束语
通过实践表明, Visual Basic中用PictureBox 结合Timer 定时器控件可以实
现实时数据的图形显示,改变Timer 控件的interval 值就可改变数据的采样周
期。另外实现了对数据库中数据的查询绘图功能,能够显示某时间段内所选择的
单站气象要素的数据曲线图或某一时间点所有站点某一要素值数据曲线图,可以
对历史数据进行反复查询、研究。软件运行需要在通辽市气象局内网才能运行,
操作简单, 使用方便、高效。
参考文献:
[1]彭波. Visual Basic 编程技术全接触[M] . 北京: 清华大学出版社, 2008.
[2]梁芳, 杨光, 李青, 等. Visual Basic 程序设计案例教程[M] . 北京: 清华
大学出版社, 2006.
[3] 龚小勇. 关系数据库与SQL Server 2000 [ M] . 北京: 机械工业出版社,
2006.