VB环境中绘制数据曲线图

来源 :教坛聚焦 | 被引量 : 0次 | 上传用户:coniji
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:为了更好地为汛期气象服务提供有力的资料补充和保障,截至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.
其他文献
美术课是对学生进行美育的重要途径。对于陶冶情操,启迪智慧,促进学生的全面发展,具有重要作用。美术教育不但能培养学生的审美情趣,而且对学生的观察力、想象力、创造力的培养和发展都有非常大的作用。在素质教育的今天,美育是不能忽略的,那么该如何来培养学生的美术兴趣,提高学生创造能力?作为教师我们应该从自身做起,转变教学观念,从课堂抓起,培养其兴趣。下面就我近几年在从事美术教学中培养学生美术兴趣、提高创新能
期刊
写作是学生的一种综合能力的表现,在语文试卷结构中占有举足轻重的地位。指导学生快速准确地捕捉信息,写出有创新精神又有个性特色作文,是一个语文教育者应该思考的问题。笔者在此谈谈指导学生写作的心得,以此就教于大方之家。  一、教师应“抛砖引玉”,开启学生写作的思维  要让学生下笔之前做好充分的准备。包括素材的准备,健康的写作心态,良好的思维品质,顺畅的写作思路。做到下笔之前胸有成竹。对于话题作文,笔者要
期刊
新课程改革要求教师更新教学理念,深化教学方法,结合语文听、说、读、写的训练,促进学生主动发展,寓创新人才。  一、激发学生学习兴趣  兴趣是培养学生创新能力的起点,是学习成功的秘决。有兴趣的学习不仅能使人全神贯注,积极思考。使学生沉浸在活跃的氛围中,受到潜移默化的熏陶。在语文教学中,教师要注意挖掘教学内容本身内在乐趣,依据学生心理特征认识规律挖掘语文教材中的诱导因素。激发学生用自己的思维能力来体验
期刊
素质教育是为各级各类学校的共同任务,就是培养全民素质在德、智、体、美等方面的全面发展,以全面贯彻党和国家教育方针为根本途径。 面向现代化、面向世界、面向未来不断丰富素质教育的内容,新时期全民素质教育就是要在思想、道德素质加大观念转变的力度,以八荣八耻为核心,着重抓好社会公德教育,诚信教育、爱国主义教育等。 素质教育就是培养提高全体受教育者综合素质的教育,是促进人、社会自然和谐发展为价值取向,以全民
期刊
素质教育体现了教育的本质和发展趋势,其核心内容是培养学生的创新能力,最终目的是造就创新型人才。当今世界,知识的更新周期缩短。高新技术发展迅猛,国力竞争日趋激烈,各国都急需涌现一批又一批创新型科技人才。因此,培养学生的创新能力,越来越受到有识之士的共同重视。作为基础工具课的语文教学,具有培养学生创新能力的独特优势。那么,如何在语文教学中培养学生的创新意识呢?在教学实践中,我主要从以下几个方面做了些有
期刊
创新已成为当今教育教学改革研究和实验的一个重要课题。数学作为一门锻炼学生思维的基础学科,在整个的学校教育中有着举足轻重的作用,数学教师的创新意识是培养学生创新能力的前提,学生的创新兴趣是培养和发展创新能力的关键,培养学生良好的思维习惯是发展学生创新能力的根本。所以在数学教学中开展创新教育的具有重要意义。  “通过义务教育阶段的数学学习,使学生能够具有初步的创新精神和实践能力”的创新教育已成为数学教
期刊
高中英语新教材体现了以学生的发展为出发点和归宿,渗透了一系列新的理念。其目的不仅是培养学生的综合语言能力,发展学生的语言运用能力,还帮助学生形成正确的世界观、人生观和价值观;同时也有助于培养教师和学生的创新精神。 所谓的教学情景就是学习的课堂氛围。在中学英语课堂教学中,良好的课堂教学情景不仅使教学变得非常有趣,更重要的是能够很好地激活学生的思维和求知欲它与实际的语言交际的情景——也就是我们通常所说
期刊
数学教育是数学活动的教育,也就是思维活动的教育。如何在高中数学教学中实施创新教育,引导学生主动地创造性地学习数学,是当前高中实施素质教育的重要课题。下面就数学教学中实施创新教育谈点看法。  一、教师备课时的创新  实施创新教育,作为教师,首先要转变观念,建立真正的创新教育的理念,所备的课要与学生心理发展特点、学生的生活实际相适应。备课时一般做到:(1)教学目的要创新。要根据教材内容但又不拘泥于教材
期刊
中国教育改革和发展纲要》指出:“全面提高学生的思想道德、文化科学、劳动技能和身体心理素质。”《纲要》为中、小学语文课由应试教育向素质教育转轨,为面向21世纪的基础教育指明了改革方向和奋斗目标。中、小学语文教育是提高整体文化科学素质的奠基工程,是发展上述整体素质的必要前提和条件。因此,搞好中、小学语文课素质教育,是关系到提高整体民族文化素质和教育素质的世纪大事。  众所周知,中、小学语文课,是一门综
期刊
叶圣陶先生在《创造的儿童教育》中说:“处处是创造之地、天天是创造之时、人人是创造之人。”因此,培养学生的创造性思维决不是针对高智力学生,而是要面向全体学生,让他们都有机会获得创造性思维的训练。教师要努力发掘每个学生的创造力,使每个学生的创造力充分发挥出来,将学生培养成为创造型人才。  一、理论联系实际  数学是一门研究现实世界中空间形式和数量关系的学科。数学源于生活,生活中充满着数学。学生的数学知
期刊