vb 彩色等值线图Word文档下载推荐.docx

上传人:b****5 文档编号:18595797 上传时间:2022-12-29 格式:DOCX 页数:10 大小:19.30KB
下载 相关 举报
vb 彩色等值线图Word文档下载推荐.docx_第1页
第1页 / 共10页
vb 彩色等值线图Word文档下载推荐.docx_第2页
第2页 / 共10页
vb 彩色等值线图Word文档下载推荐.docx_第3页
第3页 / 共10页
vb 彩色等值线图Word文档下载推荐.docx_第4页
第4页 / 共10页
vb 彩色等值线图Word文档下载推荐.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

vb 彩色等值线图Word文档下载推荐.docx

《vb 彩色等值线图Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《vb 彩色等值线图Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。

vb 彩色等值线图Word文档下载推荐.docx

2.程序组成

(1)BAS模块modParameter

声明公有变量。

(2)窗体frmFileName

利用驱动器列表框、目录列表框和文件列表框提供绘制等值线图的数据文件全名。

(3)窗体frmChange

在文本框中重新键入数据点间隔DX和DY,可以改变参数的缺省设置。

(4)窗体frmContour

窗体包括作为图形容器的图片框pic,加载标题的标签lblTitle,以及显示图例的图片框picLegend。

操作是通过菜单进行的,菜单项有“作图”、“退出”、“移动图题”、“改变参数”和“数据倒转”。

作图的思路很简单,作起来更简单。

判断网格点的数值大小,按图例所规定的颜色“对号入座”,在数据点上画一个正方形。

3.程序代码

’绘彩色等值线图

OptionExplicit

PublicintRowAsInteger’行数

PublicintRowAllAsInteger’总行数

PublicintColAsInteger’列数

PublicstrFileNameAsString’数据文件

PublicstrLabelNameAsString’图形标题

PublicintMAsInteger,intNAsInteger

PublicV()AsDouble,V1()AsDouble

PublicMAsInteger,NAsInteger’数据点的行数和列数

PublicDXAsDouble,DYAsDouble’数据点在X和Y方向上的间距

’PA是初始等值线,缺省以最小值作为初始等值线值

’PB是终止等值线,缺省以最大值作为终止等值线值

’PC是等值线间距,缺省按12条等值线计算

PublicPAAsDouble,PBAsDouble,PCAsDouble

’文件窗体

DimintIAsInteger,intJAsInteger

DimintFileNumberAsInteger’文件号

DimstrDataAsString’临时保存数据

DimblnTitleAsBoolean’是否有图题

DimblnRowLabelAsBoolean’是否有行标

DimblnColLabelAsBoolean’是否有列标

PrivateSubForm_Load()

File1.Pattern="

*.dat"

’只显示数据文件

Me.Width=5760

EndSub

’选择目录

PrivateSubDir1_Change()

File1.Path=Dir1.Path

’选择驱动器

PrivateSubDrive1_Change()

Dir1.Path=Drive1.Drive

’确定数据文件

PrivateSubFile1_Click()

txtFile.Text=Dir1.Path&

"

\"

&

File1.FileName

’确定,给出文件名和行数、列数后单击

PrivateSubcmdOK_Click()

strFileName=txtFile.Text’文件名

intFileNumber=FreeFile’取得空闲的文件号码

OpenstrFileNameForInputAsintFileNumber

Input#intFileNumber,strData’读列数

intCol=Val(strData)’取得列数

IfintCol>

=2Then

ForintI=2TointCol’空转,读*****

Input#intFileNumber,strData

NextintI

EndIf

Input#intFileNumber,strData’读行数

intRow=Val(strData)’取得行数

intM=intRow:

intN=intCol

M=intM:

N=intN

’重新定义图形数据数组

ReDimV(1TointM,1TointN)’数据

ReDimV1(1TointM,1TointN)’数据

Input#intFileNumber,strData’读总行数

intRowAll=Val(strData)’取得总行数

blnTitle=False:

blnRowLabel=False:

blnColLabel=False

’优先考虑图题

IfintRowAll>

intRow+3ThenblnTitle=True’有图题

’其次考虑行标

2*intRow+3Then

blnRowLabel=True’有行标

ReDimstrRowLabel(1TointRow)’重新定义行标数组

’最后考虑列标

2*intRow+4Then

blnColLabel=True’有列标

ReDimstrColLabel(1TointCol)’重新定义列标数组

IfblnTitleThen

Input#intFileNumber,strData’读图形标题

strLabelName=strData’保存图题

ForintI=2TointCol’空转,读*****号

IfblnRowLabelThen

ForintI=1TointRow

Input#intFileNumber,strData’读行标题

ForintJ=2TointCol’空转,读*****号

NextintJ

IfblnColLabelThen

ForintI=1TointCol’读列标题

ForintJ=1TointCol

Input#intFileNumber,strData’读图形数据

V(intI,intJ)=Val(strData)

V1(intI,intJ)=V(intI,intJ)

Close

frmContour.Visible=True

’退出

PrivateSubcmdEXIT_Click()

UnloadMe

End

’改变参数

’确定

’重新取得参数值

DX=Val(txtX):

DY=Val(txtY)’数据点间距

’彩色等值线图

’与系统所规定的屏幕坐标系一致

’既原点在左上角,Y方向向下为正,X方向向右为正

DimsngXAsSingle,sngYAsSingle

DimWWAsSingle

DimIAsInteger,JAsInteger,KAsInteger

DimDAsDouble

’画彩色等值线过程

PrivateSubContour(M,N,DX,DY,S)

Dimlegend(1To12)AsDouble,WAsDouble

K=1

ForW=PAToPB+0.00000001StepPC

legend(K)=W

K=K+1

NextW

’画图例

picLegend.CurrentX=0.5

picLegend.CurrentY=1

ForK=1To12’12个等级

picLegend.Line-(1,K+1),QBColor(K),BF

picLegend.CurrentY=K+1

NextK

’为图例写数字

ForK=1To12

picLegend.CurrentX=1

picLegend.CurrentY=K+0.3

picLegend.Printlegend(K)

’根据网格点数值在网格点上画不同颜色的正方形

ForI=1ToM

ForJ=1ToN

IfS(I,J)<

legend(K)+PC/3Then

pic.CurrentX=J*DX-DX/2

pic.CurrentY=I*DY-DY/2

pic.Line-(J*DX+DX/2,I*DY+DY/2),QBColor(K),BF

GoToL

L:

NextJ

NextI

Me.Top=0

Me.Left=0

Me.Height=10000:

Me.Width=14600

PA=100000000

PB=-100000000

IfV(I,J)>

PBThenPB=V(I,J)

IfV(I,J)<

PAThenPA=V(I,J)

PC=(PB-PA)/11

DX=1:

DY=1’缺省设置间距为1厘米

lblTitle.Visible=False’图题标签不可视

mnuMove.Enabled=False’移动图题不可用

PrivateSubmnuChange_Click()

’在参数窗体显示参数

frmChange.txtX=Str(DX)

frmChange.txtY=Str(DY)

frmChange.Visible=True

’屏幕绘图

PrivateSubmnuDraw_Click()

pic.Cls

pic.ScaleMode=7’图片框以厘米为单位

picLegend.ScaleMode=7’图例图片框以厘米为单位

Printer.ScaleMode=7’打印机以厘米为单位

pic.Height=16:

pic.Width=20

picLegend.Left=20.5:

picLegend.Height=16

’如果点数很多,按厘米计会超出图幅,这时将使用自定义坐标系

IfN*DX>

=pic.WidthOrM*DY>

=pic.HeightThen

IfN*DX<

1.25*M*DYThen

WW=M*DY

Else

WW=N*DX/1.25

’建立自定义坐标系

pic.Scale(0,0)-(WW*1.25,WW)

lblTitle.Caption=strLabelName

ContourintM,intN,DX,DY,V

lblTitle.Visible=True’图题可视

mnuMove.Enabled=True’移动图题菜单可用

’退出,结束程序运行

PrivateSubmnuExit_Click()

frmFileName.Visible=True

’将图片框pic的DragMode属性设为0-Manual,可以利用鼠标手动拖动pic

PrivateSubpic_DragDrop(SourceAsControl,XAsSingle,YAsSingle)

Source.MoveX+pic.Left-sngX,Y+pic.Top-sngY

’按下鼠标时记下pic的当前位置

PrivateSubpic_MouseDown(ButtonAsInteger,ShiftAsInteger,_

XAsSingle,YAsSingle)

sngX=X:

sngY=Y

pic.DragvbBeginDrag

’下移标题

PrivateSubmnuDown_Click()

lblTitle.Top=lblTitle.Top+0.1

lblTitle.MovelblTitle.Left,lblTitle.Top

’左移标题

PrivateSubmnuLeft_Click()

lblTitle.Left=lblTitle.Left-0.1

’右移标题

PrivateSubmnuRight_Click()

lblTitle.Left=lblTitle.Left+0.1

’上移标题

PrivateSubmnuUP_Click()

lblTitle.Top=lblTitle.Top-0.1

’数据行和数据列都倒转

PrivateSubmnuBoth_Click()

IfintRow<

>

intColThen

MsgBox"

数据行数与数据列数不相等,不能交换数据!

"

ExitSub

’数据列倒转

ForI=1TointRow

ForJ=1TointCol\2

D=V(intCol-J+1,I)

V(intCol-J+1,I)=V(J,I)

V(J,I)=D

’数据行倒转

ForI=1TointRow\2

ForJ=1TointCol

D=V(J,intRow-I+1)

V(J,intRow-I+1)=V(J,I)

PrivateSubmnuRow_Click()

PrivateSubmnuCol_Click()

’使用原始数据

PrivateSubmnuSource_Click()

V(J,I)=V1(J,I)

4.运行

(1)确定作图文件

启动后,可以通过驱动器列表框、目录列表框和文件列表框选择作图文件(见图5-3)。

这一次仍然使用“网格_6.dat”,其路径可以从图5-3了解。

(2)改变参数

单击“确定”后,进入图形窗体。

缺省的数据点在X和Y两个方向上的间距都是1。

单击“改变参数”菜单,将间距(DX和DY)都改成0.5。

(3)作图

单击图形窗体的“作图”菜单,程序用所提供的数据文件绘制彩色等值线图(见图5-5)。

在等值线图的右侧显示图例(见图5-6)。

在改变参数或进行数据倒转之后,都需要单击“作图”菜单重新绘图。

(4)移动图题

原来的图题在图片框的右上方,可以使用“移动图题”菜单中的子菜单改变图题的位置。

直接使用快捷键会更方便。

上移可以使用Ctrl+U,下移可以使用Ctrl+D,右移可以使用Ctrl+R,左移可以使用Ctrl+L。

图5-5的图题位置在图形的下方,是使用快捷键移动后的结果。

图5-5按数据“网格_6”所绘制的彩色等值线图图5-6彩色等值线图所显示的图例

(5)打印

程序不再具有直接打印功能,但可以用键盘上的抓图键将图件放入剪贴板,然后利用Windows的画图软件进行编辑并打印。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1