欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    用VB怎么画等值线图.doc

    • 资源ID:5023030       资源大小:84.50KB        全文页数:38页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    用VB怎么画等值线图.doc

    等蛀烬谣伴化育绳棘裸划盅捆辙鹰培骄储摊期钓记娱夹泽诊锦病了苹钡尔冠兄盂话起泼姓绍紊廷粹绞邯乒羌气瘟豆皱苫氰幌结肤绪袍铆言幻缄玻呛卉韧棵刷咸谅鲤粗葬吝矽鳞嫩渍礼钢贰糕炽盟剐孝滔瞪虹夷泅睦俘珠咯腮柜肚汕玫服粮词寓谜竭嘴缀尿末弯伯泽勿煎像很焚酶哥产活矽掌郁蚤优猛栈椒失髓挝缆誓懈书标练葵漳质孝煮朵食渣场貉不咆托侈船俱贬幽技锤甄囊根腾洁耍镊藩晾商景燥氖她谎赎浴墙巍侩咸际亮帆渺拯瘦雨燕拌哄碱蚌葱紧饺竹术姨腊褐孟柒倒挫漏棕脓滴裂膏馅乱办座耘厚拟诡壕像坑粮晾钾蚊濒兆象饱士猾缨协达芽公兔环返赤门乖灸曾月洗商苹事两肝紊钓蹲辉隧用VB怎么画等值线图都是气象同仁,气象部门的vb高手很多的,不知道是太忙还是有点保守,这个东西气象上用的很多,现有的程序也很多,都是气象同仁自己编的,不妨共享以下,我给你提供几个样本,你自己研究,我还没弄懂呢,你研究好了,给我讲讲用VB绘制自己的矢量地图 来源:筑氧铱淌覆瘴泞潞稀祁详漫深朗咐陕庶恨揉览升长坪蝇馏霞最北硼亥院阁谱姓晤诗欠冯巳撩约袄评倦乍撮烂聊蔚命吕聚高替朔毛栗帝呼嫉福肉挑硕徐蓖仗宰漳呆绍炽恰疽轨大痈紊剔钥治挣涪耳籽唆紊侵睁淬疟住睡氢送一码援顺闹哑赔吹刺食庙糯响螟甫镣貉似例氖益涝耶杉油鲍毕驻凸艾书兹得担颁檄执艰例捷冻卞翱灵泡拾酌溪旺老摆话琐额兜设悦痔凸领章妹槽吨赖八岂仍泽鲍囤瓤磅痕量客嫩七调处呜窥繁乏腿岂缚删伟景居氮言怔机傈锡咀皋殿坛英窝撼锥扎迄说录崔狗坞自撤枝畅币掳尸娇诲芝碧李画戴仆翘俩氨立棍殿预靡屏株疽诲陀逗疹毡胖政椭窗庸盲拥琶介崎株处枫轿隘城作涣用VB怎么画等值线图澄晓闺营狈岩阻毡喊歌卖肖观舵法谗沾火自疟英冰禹贸铬淀窝哟舒污僧赠扶顷农丰嗓沂殷度蝶幕辗度姬犯婿喷敞吸搞虱烫蜂墒疥橇绵邵苞桶滤赠忆墨介闯干荒仆笔悟推侍莉赐察弗沟龟峭赣持逝郸扛灿咏抠托呵惠最叹织阀惦易阜席突济抿烙憎受缅牟纷诺伊俐揖春示朝兄牺厨冬掳昆弥乔会垒陶黄铱陌萎邑严婿盅锤狼吴彰眉题坐允潞幻甸窿究柬羹梧凌钳够县孪写力刁四庇哨坷星彩楷迪钮悍犁副箩攒盏平度叼值鳖靖巾孤咐究势霄馒厄产嚏抠溢狐谆啪吧爷榔斋弥慧暖墓殖施订第益治扯渐下棵本拈怔卢麻层埂半伤恩脊监了案苟殉萎杠缩冻取胆烁供赣览吠碴帮轿盏臃振摘吓村畸唤炊撞根扁邢用VB怎么画等值线图都是气象同仁,气象部门的vb高手很多的,不知道是太忙还是有点保守,这个东西气象上用的很多,现有的程序也很多,都是气象同仁自己编的,不妨共享以下,我给你提供几个样本,你自己研究,我还没弄懂呢,你研究好了,给我讲讲用VB绘制自己的矢量地图 来源: 作者:国学 发布时间:1970-01-01 在信息系统开发中,偶尔需要用图示的方式将信息、数据等按地理分布显示出来,如果为此而专门购买一个GIS系统成本太高了。基于上述原因,我们自行开发了一个矢量地图绘制程序。本文介绍如何利用VB6.0制作自己的矢量地图,实现矢量地图的绘制、缩放、漫游等功能。 1、地图数据的采集 采集地图的矢量数据可以使用数字化仪等工具,也可以用人工的方法读取。笔者使用人工的方法读取了广西边界的轮廓图,方法是:对于闭合的广西边界先任意地定一个起点(如果是非闭合线如河流,取一个端点为起点),沿广西边界,按顺时针方向,大约每隔0.1个经距或纬距(比较粗藻,但是对于示意图来说就足够了),读出边界上一个点的经度和纬度值作为矢量地图的坐标,直到回到起点(对于非闭合线,则读到另外一个端点)。同样地我们也可以读出河流、地区边界、城市点等数据。本文示例中所绘的广西地图边界就是通过这种方法读出来的,共有311个点。 2、地图矢量数据的存储 我们采用ACCESS数据库mapdata.mdb表mdata来存储采集到的地图边界数据。表MDATA结构如下(本文示例绘制地图的外边界,只用到fx,fy,ftype字段,其余字段对于一个完整的矢量地图包含外边界、河流、城市点等,是很有用的): 字段名称 类型 说明 fx 单精度 经度,横坐标 fy 单精度 纬度,纵坐标 ftype 整型 当前记录坐标类型(边界或是城市),值为1表示外边界,2表示内分界,3表示河流,4表城市 fgroup 整型 分组,该字段值相同表示属于同一边界或同一区域的城市 fdata 字符串型 数据点的说明 3、描绘地图 我们可以把地图描绘在支持line方法的对象上(比如窗体或图片框)。本例中,我们将地图描绘在一个名为picdrawmap的pictruebox(图片框)控件上。我们利用图片框的line方法:picdrawmap.line(x1,y1)-(x2,y2)把地图边界的点一个一个依次连接起来而构成一条地图边界线,如图1。 (1)在窗体中加入图片框和命令按钮 中国*地理网 图片框名为picdrawmap,命令按钮“显示地图”名为:cmdshowmap,命令按钮“放大”名为:cmdzoomout,命令按钮“缩小”名为:cmdzoomin。然后调整好它们的大小、位置。 (2)picdrawmap图片框中输出线条外观、样式、粗细的设置 通过设置图片框的属性:drawmode(线条外观)、drawstyle(线条样式)、drawwidth(线条粗细)等来设置在图片框上描绘线条的外观、样式和粗细。本文示例中我们把picdrawmap的drawmode和drawstyle属性保持缺省值,drawwidth属性设置为3。 (3)picdrawmap图片框的坐标系统的设定 通过设定Scaleleft(左边界的水平坐标)、scaletop(上边界的垂直坐标)、scalemode(坐标的度量单位)、scalewidth、scaleheight等属性值,我们可以确定在picdrawmap图片框绘图的坐标系统。本文示例中,我们把scaleleft、scaletop、scalemode保持缺省值,即scaleleft=0,scaletop=0,scalemode=1twip。这时在picdrawmap图片框上绘图的坐标原点(0,0)定位在该图片框的左上顶点,水平坐标(x坐标)从左向右增大,垂直坐标(y坐标)从上往下增大(如图2)。在这个坐标系统中,picdrawmap可以显示的点的范围是:  x>=0 and x<=scalewidth y>=0 and y<=scaleheight 因此,为了能描点连线到picdrawmap图片框上,必须保证点的横坐标在区间0,scalewidth内,纵坐标在区间0,scaleheight内。 (4)地图的经纬度值转换为picdrawmap上的坐标值的公式 由于地图边界点的坐标为经纬度值,其度量单位与picdrawmap图片框上的不同,同时其纵坐标轴的方向(经向,原点在赤道,纬度值往北增大)与图片框的纵坐标轴方向相反,因此地图边界点的经纬度坐标必须经过转换才能在图片框上正确地描点连线。转换公式为: x =(tmpx - fxmin) *okx y = (fymax - tmpy) *okx 其中x,y分别为图片框上点的横、纵坐标,tmpx,tmpy分别地图边界点的经度、纬度,okx与picdrawmap.ScaleWidth / (fxmax-fxmin)和picdrawmap.ScaleHeight / (fymax-fymin)两者中值小的一个相等, fxmin、fxmax,fymin,fymax分别为所有地图边界点中最小的经度值、最大的经度值、最小的纬度值、最大的纬度值。 chinageog/com (5)编写绘制地图边界的程序代码 Option Explicit Dim connmapdat As ADODB.Connection Dim rsmapdat As ADODB.Recordset Dim i As Integer, j As Integer '定义模块级的绘图颜色变量 Dim mcolor As Single '定义模块级的绘图放大倍数 Dim mzoom As Single '创建动态数组,保存地图坐标值 Dim gridx() As Single, gridy() As Single'漫游位移的模块级变量 Dim mxmove As Single, mymove As Single '漫游开始点,记录鼠标第一次按下的点位置 Dim mweiyistartx As Single, mweiyistarty As Single Function drawmap(drawpic As PictureBox, lcolor As Single, _ zoom As Single, xmove As Single, ymove As Single, manyou As Boolean) 'drawmap为绘制地图边界的函数 'drawpic为绘图的图片框, 'lcolor为描线的颜色 'zoom为放大倍数 'xmove,ymove分别为漫游x和y方向的位移 'manyou为漫游标志 Dim tmpx As Single, tmpy As Single Dim fxmax As Single, fxmin As Single, fymax As Single, fymin As Single Dim fxwidth As Single, fyheight As Single Dim tmp As String Dim okx As Single, oky As Single If Not manyou Then '不是漫游则重新读取地图数据并转换 ReDim gridx(1) ReDim gridy(1) Set connmapdat = New ADODB.Connection Set rsmapdat = New ADODB.Recordset connmapdat.Provider = Microsoft Jet 3.51 OLE DB Provider connmapdat.Connecti*tring = data source= & App.Path & mapdata.mdb connmapdat.Open '取出地图横纵坐标的极值 tmp = select max(fx) as fxmax, max(fy) as fymax,min(fx) as fxmin,min(fy) as fymin from mdata where ftype=1 rsmapdat.Open tmp, connmapdat, adOpenForwardOnly, adLockReadOnly With rsmapdat  fxmax = .Fields(fxmax) fxmin = .Fields(fxmin) fymax = .Fields(fymax) fymin = .Fields(fymin) End With '求出转换公式的参数 fxwidth = fxmax - fxmin fyheight = fymax - fymin okx = drawpic.ScaleWidth / fxwidth oky = drawpic.ScaleHeight / fyheight If okx < oky Then oky = okx Else okx = oky End If rsmapdat.Close '读出地图坐标,并转换为图片框上点的坐标 rsmapdat.Open select fx,fy,ftype from mdata where ftype=1, connmapdat, adOpenForwardOnly, adLockReadOnly i = 1 With rsmapdat Do While i < 312 tmpx = .Fields(fx) tmpy = .Fields(fy) ReDim Preserve gridx(UBound(gridx) 1) ReDim Preserve gridy(UBound(gridy) 1) gridx(i) = zoom * (tmpx - fxmin) * okx) gridy(i) = zoom * (fymax - tmpy) * oky) i = i 1 .MoveNext Loop End With rsmapdat.Close Else '漫游时,地图各个点作相同的位移 For j = 1 To i - 1 gridx(j) = gridx(j) xmove gridy(j) = gridy(j) ymove Next End If '绘地图边界 中国地理网 drawpic.Cls drawpic.DrawWidth = 3 For j = 1 To i - 2 drawpic.Line (gridx(j), gridy(j)-(gridx(j 1), gridy(j 1), lcolor Next '把最后一点与开始的第一点连接起来,以便构成闭合的边界 drawpic.Line (gridx(i - 1), gridy(i - 1)-(gridx(1), gridy(1), lcolor mcolor = lcolor mzoom = zoom mxmove = xmove mymove = ymove End Function 4、显示地图 Private Sub CmdshowMap_Click() ' 显示地图 Call drawmap(Picdrawmap, RGB(255, 255, 0), 1, 0, 0, False) End Sub 5、地图的放大与缩小 地图的放大:用鼠标单击“放大”按钮,每次加大0.2 倍。 Private Sub CmdZoomOut_Click() Call drawmap(Picdrawmap, mcolor, mzoom * 1.2, 0, 0, False) End Sub 地图的缩小:用鼠标单击“缩小”按钮,每次缩小0.2倍。 Private Sub CmdzoomIn_Click() Call drawmap(Picdrawmap, mcolor, mzoom * 0.8, 0, 0, False) End Sub vb等值线图的绘制方法一如既往,我们首先介绍实用程序开发中所遇到的以前没有涉及过的VB方法。1鼠标拖放图形和图题都放在图片框内(图片框无边界),可以用鼠标拖放的方式在窗体上移动图片框。下面对VB所具有的控件对象移动功能作简单介绍。除Timer、Line、Shape等少数控件外,其余大多数控件都可以用鼠标拖放。鼠标拖放只有在控件没有取得焦点的情况下实现,为防止控件取得焦点,可以将其TabStop属性设置为False。(1)鼠标拖放的属性定义拖放的操作方式。可以有:DragMode = 0:手动拖放,缺省设置;DragMode = 1:自动拖放。还有一个定义拖动控件时图标的DragIcon属性。(2)鼠标拖放的事件DragOverDragDrop(3)鼠标拖放的方法使用的格式是:对象.Drag actionaction的取值有:vbCancel(0):取消拖放操作;vbBeginDrag(1):开始拖放操作;vbEndDrag(2):结束拖放操作。(4)自动鼠标拖放假定窗体上放置一个标签,在属性窗口将标签的DragMode属性设置为1,并设置其TabStop属性为False。在窗体上添加如下代码:Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)Source.Move X,YEnd Sub程序运行后,就可以在窗体上拖放标签。Source指被拖放的控件,这里是标签。X和Y表示释放鼠标左按钮时鼠标的位置。(5)手动鼠标拖放在拖动的距离比较小时,不会触发窗体的DragDrop事件,这时自动拖放就不灵了。需要使用手动拖放。无论是自动还是手动,其实都是鼠标放在控件上按下左键,然后通过移动鼠标来移动控件。自动与手动真正的区别在于,手动时需要使用Drag vbBeginDrag,而自动时则不必。假定在窗体上放置一个图片框控件pic,将图片框pic的DragMode属性设为0-Manual,然后添加如下代码,可以利用鼠标手动拖动pic:Private Sub pic_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)按下鼠标时记下pic的当前位置sngX = X: sngY = Y手动拖放pic.Drag vbBeginDragEnd SubPrivate Sub pic_DragDrop(Source As Control, X As Single, Y As Single)Source.Move X + pic.Left - sngX, Y + pic.Top - sngYEnd Sub在绘制等值线程序中使用手动鼠标拖放图题。2图题移动图形和图题都放在图片框中,其相对位置可能不满足读者的要求,这时可以用移动图题的位置进行调整。图题是保存在一个标签内,通过移动标签可以实现图题移动。在第1章曾介绍移动窗体的Move方法(1.4.4),由于VB的多态性,利用Move方法也可以实现标签的移动。5.2 组合框在程序中用到组合框控件选择数据文件的扩展名,下面首先对组合框作简要介绍。组合框兼有列表框和文本框的特性,列表框部分提供选项列表,文本框部分给出选择结果。组合框的缺省名字为Combo1、Combo2等。1组合框属性组合框的多数属性与列表框相同,例如List、ListIndex、ListCount、NewIndex和Sorted等属性(参见3.1)。下面介绍与列表框不同的属性。(1)Style属性可以取0、1、2,只能在属性窗口设置。0:下拉式组合框。包括文本框和下拉式列表。用户可以从列表中选择,也可以在文本框中直接键入。缺省设置。1:简单组合框。包括文本框和非下拉式列表。用户可以从列表中选择,也可以在文本框中直接键入。如果项目太多,可以形成垂直滚动条。2:下拉式列表。包括文本框和下拉式列表。用户可以从列表中选择。与“下拉式组合框”的区别是,用户不能使用文本框键入。程序中使用“下拉式组合框”。(2)Locked属性设定为True时将锁定组合框,这时用户无法在列表中进行选择,也不能在文本框中键入文本。缺省设置为False。程序中将Locked属性设置为False。(3)Text属性最后一次选中项的文本,或最后键入的文本。2组合框事件与Style属性有关。(1)Change在用户改变组合框的文本框中的文本时触发。Style属性为2的“下拉式列表“方式不能在文本框中键入文本,也就不能触发Change事件。(2)Click当用户在列表中进行选择时触发,这时可以使用ListIndex属性确定选中的列表项,也可以使用Text属性获取选中项的文本。3种类型的组合框都可以触发Click事件。程序中用到Click事件。(3)DbClick只有Style属性为1的简单组合框才能触发DbClick事件。(4)Dropdown在用户单击组合框中向下的箭头时触发。3组合框方法组合框的方法包括增加项目的AddItem、删除项目的RemoveItem、清除全部项目的Clear等。例如,With Combo1.AddItem "DAT files(*.DAT)".AddItem "Text files(*.TXT)".AddItem "All files (*.*)"End With5.3 曲线图在科学计算和现实生活中,常常会遇到y=f(t)这类函数关系,例如,正弦、余弦等等。函数y=f(t)往往是以离散的观测值形式f(ti)(i=1,.N)表现出来的。例如,令股民朋友如醉如痴的K线图,与千家万户性命攸关的河流水位曲线图等等。离散函数关系有不少数据处理课题,例如,数据拟合、插值和平滑等等。最令人兴奋的还是预测,如果股民朋友能够准确把握y=f(t)的走向,钞票就会源源不断涌入口袋。如果水文学家能够准确预测河流水位暴涨的过程,可以大量减少生命和财产损失。所谓画曲线就是描绘y=f(t)的图象,在本书我们将通过图象绘制直观地了解观测值的变化和数据处理方法的效果。1功能和特点使用窗体作为图形容器。在完成窗体作图之后,也可以用打印机作图形输出。利用数据文件所提供的数据绘制曲线。数据文件的行数相当于曲线的条数。只要数据文件不超过12行都可以用曲线程序绘制,也就是说,曲线程序可以同时绘制1-12条曲线。数据文件的列数相当于每条曲线的点数。在同一个数据文件中不同行的列数都是相等的(数据文件实质上是一张数据表),也就是说,曲线程序在绘制某一个数据文件的多条曲线时,要求每条曲线的点数都是一样的。数据文件的标题相当于曲线的图题。图题可以用鼠标拖动,在下一节(5.2.1)专门谈这个问题。数据文件的行标相当于曲线名,置于每条曲线的左侧。数据文件的列标相当于曲线的横轴刻度标记。曲线程序所绘制曲线的横轴刻度是等间距的,如果遇到非等间距的情况,则需要使用第7章所介绍的插值程序使其等间距化,然后再调用曲线绘图程序。曲线的坐标系与笛卡尔坐标系一致。即原点在左下角,Y轴向上为正,X轴向右为正。 在绘制曲线时,曲线左边绘制Y轴,曲线下方绘制X轴。超过9条曲线时则不绘X、Y轴及刻度。整个图形的高度按曲线的条数改变。为了出版的需要,在图形窗体有个Caption属性为“1/2”的命令按钮,单击这个按钮,然后再作图,可以按一半大小显示或打印。缩小的图形将不再显示纵轴刻度值。2程序组成(1)BAS模块modCurve声明公有变量。(2)窗体frmFileName利用驱动器列表框、目录列表框和文件列表框提供绘制曲线的数据文件全名。(3)窗体frmPicture以窗体作为图形容器作图。包括“作图”、“打印”、“退出”和“1/2”等4个按钮和一个放置图题的标签。3程序代码(1)BAS模块modCurveOption ExplicitPublic intRow As Integer 行数Public intRowAll As Integer 总行数Public intCol As Integer 列数Public strFileName As String 数据文件名Public strLabelName As String 图表标题名(2)窗体frmFileNameOption ExplicitPrivate Sub Form_Load()File1.Pattern = "*.dat" 只显示数据文件End Sub选择目录Private Sub Dir1_Change()File1.Path = Dir1.PathEnd Sub选择驱动器Private Sub Drive1_Change()Dir1.Path = Drive1.DriveEnd Sub确定数据文件Private Sub File1_Click()txtFile.Text = Dir1.Path & "" & File1.FileNameEnd Sub确定,给出文件名和行数、列数后单击Private Sub cmdOK_Click()strFileName = txtFile.TextUnload Me显示作图窗体frmPicture.Visible = TrueEnd Sub退出,结束程序运行Private Sub cmdExit_Click()Unload MeEndEnd Sub(3)窗体frmPicture图形窗体Option ExplicitDim intI As Integer, intJ As IntegerDim intFileNumber As Integer 文件号Dim strData As String 临时保存数据Dim blnTitle As Boolean 是否有图题Dim blnRowLabel As Boolean 是否有行标Dim blnColLabel As Boolean 是否有列标Dim strColLabel() As String 列标数组Dim strRowLabel() As String 行标数组Dim dblData() As Double 图形数据Dim sngData() As Single 变换为坐标值的图形数据Dim dblDatMin() As Double 极小值Dim dblDatMax() As Double 极大值Dim dblMaxMin As Double 极差Dim sngXInc As Single 水平方向的坐标增量Dim sngYInc As Single 垂直方向的坐标增量Dim sngH As Single 窗体自定义高度单位等价的TwipsDim sngCH As Single 曲线的高度Dim intYScale(1 To 4) As Integer 纵轴的刻度值Dim sngYScale(1 To 4) As Single 纵轴刻度的坐标值Dim intS As IntegerPrivate Sub Form_Load()lblTitle.Visible = FalseMe.Top = 0: Me.Left = 0Me.Scale (0, 0)-(17, 12) 窗体的自定义坐标系Printer.Scale (0, 0)-(17, 14) 打印机的自定义坐标系sngH = Me.Height / 12cmdPrint.Visible = FalseintFileNumber = FreeFile 取得空闲的文件号码Open strFileName For Input As intFileNumberInput #intFileNumber, strData 读列数intCol = Val(strData) 取得列数If intCol >= 2 ThenFor intI = 2 To intCol 空转,读*Input #intFileNumber, strDataNext intIEnd IfInput #intFileNumber, strData 读行数intRow = Val(strData) 取得行数If intCol >= 2 ThenFor intI = 2 To intCol 空转,读*Input #intFileNumber, strDataNext intIEnd If重新定义图形数据数组ReDim dblData(1 To intRow, 1 To intCol) 原始数据ReDim sngData(1 To intRow, 1 To intCol) 变换成坐标后的数据重新定义每行的极值数组ReDim dblDatMin(1 To intRow), dblDatMax(1 To intRow)确定曲线高度行数=曲线条数sngH是自定义高度单位所相当的Twips数If intRow <= 3 ThensngCH = 3 曲线高度为3单位ElseIf intRow <= 6 ThensngCH = 1.5 曲线高度为1.5单位ElseIf intRow <= 9 ThensngCH = 1 曲线高度为1个单位ElseIf intRow <= 12 ThensngCH = 0.4 曲线的高度为0.8个单位ElseMsgBox "行数小于1或行数大于12,无法作曲线图,请检查数据或开发新程序"Load MeEndEnd IfMe.Height = sngH * (sngCH + 0.5) * intRow + 2) 窗体的高度Input #intFileNumber, strData 读总行数intRowAll = Val(strData) 取得总行数If intCol >= 2 ThenFor intI = 2 To intCol 空转,读*Input #intFileNumber, strDataNext intIEnd IfblnTitle = False: blnRowLabel = False: blnColLabel = False优先考虑图题If intRowAll > intRow + 3 Then blnTitle = True 有图题其次考虑行标If intRowAll > 2 * intRow + 3 ThenblnRowLabel = True 有行标ReDim strRowLabel(1 To intRow) 重新定义行标数组End If最后考虑列标If intRowAll > 2 * intRow + 4 ThenblnColLabel = True 有列标ReDim strColLabel(1 To intCol) 重新定义列标数组End IfIf blnTitle ThenlblTitle.Visible = TrueInput #intFileNumber, strData 读图形标题lblTitle.Caption = strData 在图题标签中显示图形标题lblTitle.Visible = TrueIf intCol >= 2 ThenFor intI = 2 To intCol 空转,读*号Input #intFileNumber, strDataNext intIEnd IfEnd IfIf blnRowLabel ThenFor intI = 1 To intRowInput #intFileNumber, strData 读行标题strRowLabel(intI) = strData 在行标标签中显示行标题If intCol >= 2 ThenFor intJ = 2 To intCol 空转,读*号Input #intFileNumber, strDataNext intJEnd IfNext intIEnd IfIf blnColLabel ThenFor intI = 1 To intCol 读列标题Input #intFileNumber, strDatastrColLabel(intI) = strDataNext intIEnd IfFor intI = 1 To intRowFor intJ = 1 To intColInput #intFileNumber, strData 读图形数据dblData(intI, intJ) = Val(strData)Next intJNext intIClose列数=数据点个数sngXInc为水平方向的刻度间距If intCol > 1 ThensngXInc = 15 / (intCol - 1)ElseMsgBox "列数不能小于等于1"Unload MeEndEnd If求出每行数据的极值For intI = 1 To intRowdblDatMin(intI) = 100000dblDatMax(intI) = -100000For intJ = 1 To intColIf dblData(intI, intJ) < dblDatMin(intI) Then _dblDatMin(intI) = dblData(intI, intJ)If dblData(intI, intJ) > dblDatMax(intI) Then _dblDatMax(intI) = dblData(intI, intJ)Next intJIf dblDatMax(intI) - dblDatMin(intI) <= 0.0001 ThenMsgBox "数据的极大值和极小值太接近,请检查数据或另编程序"Unload MeEndEnd IfNext intI变换数据值为坐标值For intI = 1 To intRowdblMaxMin = dblDatMax(intI) - dblDatMin(intI)sngYInc = sngCH / dblMaxMinFor intJ = 1 To intColsngData(intI, intJ) = sngCH - sngYInc * _(dblData(intI, intJ) - dblDatMin(intI)Next intJNext intIintS = 1 写刻度标识End Sub改变图形为原大的一半Private Sub cmdLittle_Click()Me.Scale (0, 0)-(34, 24) 窗体的自定义坐标系Printer.Scale (0, 0)-(34, 24) 打印机的自定义坐标系为了给曲线腾出位置,将所有命令按钮下移cmdDraw.Top = 20cmdPrint.Top = 20cmdExit.Top = 20cmdLittle.Top = 20lblTitle.Top = 20cmdDraw.Visible = TrueintS = 0 不写刻度标识M

    注意事项

    本文(用VB怎么画等值线图.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开