北方站长站
客服热线:0632-5117766

用VB实现数字波形显示程序

[2007-12-09 00:00:00] 作者:Northz.com 来源:北方站长站

Tags:程序 显示 数字 实现 函数 As API 方法 ByVal 声明 使用

  

  随着计算机技术及电子技术的发展,数字采集技术在检测领域的应用越来越广泛,检测速度越来越高,检测的数据量越来越大,特别是在无损检测领域,将检测数据通过计算机处理后绘制出波形,并实时显示,对及时发现伤损、分析伤损具有重要意义。wYs北方站长站
  2 波形显示wYs北方站长站
  检测数据通常是离散的数据,将离散的数据绘制出波形,可通过在两点间连接线段的方法实现。wYs北方站长站
  2.1 用Line方法显示波形wYs北方站长站
  VB提供了Line画直线方法,可在窗体上增加一个图片框控件,适当设置图片的大小和背景颜色,用Line方法将离散数据按检测顺序连接成线段,即可将波形显示在图片框中。但该方法显示波形速度较慢,不适合高速显示的应用。wYs北方站长站
  2.2 Windows API函数显示波形wYs北方站长站
  在VB中两点间连线的另一种方法是用Windows API函数,Win32 API提供了以下两个函数,联合使用可实现波形的快速显示,经过测试,显示速度比使用Line方法快70%以上。wYs北方站长站
  LineTo函数:wYs北方站长站
   函数功能:画出由数组定义的点连接的一系列线段。wYs北方站长站
   函数原型:BOOL LineTo(HDC hdc,int nXEnd,int nYEnd);wYs北方站长站
  参数:wYs北方站长站
   hdc:设备环境句柄。wYs北方站长站
   nXEnd:定义线段终点的X坐标。wYs北方站长站
   nYEnd:定义线段终点的Y坐标。wYs北方站长站
   返回值:若函数调用成功,则返回非0值;若函数调用失败,则返回值为0。wYs北方站长站
  MoveToEx函数:wYs北方站长站
   函数功能:将当前位置更新为指定的点,并有选择的返回原先的位置。wYs北方站长站
   函数原型:BOOL MoveToEx (HDC hdc,int X,int Y,LPPOINT lpPoint);wYs北方站长站
  参数:wYs北方站长站
   hdc:设备环境句柄。wYs北方站长站
   X:定义新位置的X坐标(逻辑坐标)。wYs北方站长站
   Y:定义新位置的Y坐标(逻辑坐标)。wYs北方站长站
   lpPoint:指向一个POINT结构,结构中存放原先的位置。若此参数为NULL,则不返回原先的位置wYs北方站长站
  返回值:若函数调用成功,则返回非0值;若函数调用失败,则返回值为0。wYs北方站长站
  在连接线段时,首先将检测数据放入一个数组中,用MoveToEx函数定位画线的起始点坐标,然后用LineTo函数画出起始点至下一个点之间的线段,再用MoveToEx将画线的起始点定位到下一个点,继续用LineTo函数画线,如此循环,即可将离散点连接成波形。wYs北方站长站
  例:wYs北方站长站
zz = MoveToEx(Picture1.hdc, i, Mwave(i ), LpPoint1)wYs北方站长站
zz = LineTo(Picture1.hdc, i, Mwave(i+1))wYs北方站长站
  其中:Picture1是显示波形的图片框。wYs北方站长站
  Mwave是存储检测波形的数组。wYs北方站长站
  LpPoint1可按如下方式定义为自定义类型,用于返回起始点坐标。wYs北方站长站
Type POINTAPIwYs北方站长站
X As LongwYs北方站长站
Y As LongwYs北方站长站
End TypewYs北方站长站
Public LpPoint1 As POINTAPIwYs北方站长站
  2.3 在VB中声明Windows API函数wYs北方站长站
  用Windows API函数可以实现波形的快速显示,但在使用Windows API函数之前,需在VB中对要使用的API函数用Declare语句声明。声明形式主要有两种:如果该API有返回值,应将其声明为Function函数;如果该API没有返回值,可将其声明为Sub函数。声明形式如下:wYs北方站长站
Declare Function apiname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type][,[ByVal] variable [as type]]…])] as Type;wYs北方站长站
Declare Sub apiname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type][,[ByVal] variable [as type]]…])];wYs北方站长站
  其中:Function和Sub用来指定要调用的DLL API函数类型,Lib用来指明DLL文件的路径。如果要调用的API函数使用字符串,必须用Alias指定正确的字符集:ANSI或Unicode;ByVal用于指明参数的传递为值传递,不加ByVal为地址传递;variable 为变量名称;type为变量类型。wYs北方站长站
  在函数的声明和应用时,变量个数应和函数原型相同,类型一致,一一对应。wYs北方站长站
  下面给出了LineTo和MoveToEx两个DLL API函数声明的实例,使用时将以下语句放到标准模块的通用声明部分,即可在程序的任何地方调用。wYs北方站长站
Public Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As LongwYs北方站长站
Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, lpPoint As POINTAPI) As LongwYs北方站长站
  如果只想在单一模块中调用DLL API,可将Declare前面的Public改成Private,同时将该声明语句放到调用该函数模块的通用声明部分。wYs北方站长站
  经过声明之后的Windows API函数,VB可以象使用自身函数一样来使用。wYs北方站长站

 

News

 

info

 

down

出售手机裁听器,手机跟踪定位系统    企业网站,网城,购物网,都市导购,校园网    网上书店系统    上海电信机房服务器托管,双线主机托管    美女图片馆    15G 高清晰图片资源 无水印    室内装潢材料新产品杰威尔艺术漆    收一万ip的美女图片    大量收购个人网址导航网站    出售网址站PR=4alexa=119,764    

1 2 下一页

下一篇链接:VB设计有语音报时和报警功能的闹钟

上一篇链接:VB:怎样将查询结果导出到Excel

评论】 【打印】 【加入收藏】 【关闭→论坛 →博客 →数据中心

 共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面