感觉认识实例:

一、Application

属性

Caption  主窗体标题

WindowState   主窗体状态(srfWindowStateMaximized ,  SrfWindowStateMinimized,即最大化最小等)

Documents      所拥的Document集合

ShowStatusBar  是否显示状态栏

ShowToolBars   是否显示工具栏

Visible                 是否显示窗体(默认不显示)

ActiveDocument     当前活动Document对象

方法:

GridConvert       各种Grid文件的转换

GridSplineSmooth     插值时平滑网格数据

Quit                              退出Surfer

二、Documents

派生两对象:PlotDocument  和  WksDocument

PlotDocument含形状对象:ShapeCollection集合

ShapeCollection集合有:Rectangle,PloyLine,ContourMap,BaseMap,Axes,ScaleBars,

Symbol(符号),Text(文本)

创建新文档用Add方法。

主要属性:

Saved       最近修改是否保存

Type          Document类型(srfDocPlot,srfDocWks,srfDocGrid  三种类型)

常用方法:

Activate            使Document窗体为当前窗体

Close              关闭

Save                 保存(指定一文件)

SaveAs            另存为

先来一个简单操作的例子。

下面在VB中操作surfer

在VB中引用surfer 8 Type library

然后按下建立,可以看到VB就可以操作surfer了。

command1是调用surfer ,    command2是关闭

由上例可以看出,实际上和操作excel是一样的。

比如:用VB打开了surfer,退出VB,surfer并不关闭。原因是VB没有向surfer发出关闭命令。

三:Shapes Collection

绘图集合,这是操作的重点。

属性:

Rotation     设置或返回旋转角度

Selected      是否选中

方法:

Delete     删除

Deselect    取消选中

Select         选中

四、 Selection Collection

大多命令都是对选择中的对象有效。所以选中才有更效地进行操作。

注意:从选中集合中删除对象,只表明对象不在选中之列,实际还在存在 的。

五: 名字参数

Surfer支持位置参数,就是平时的参数,同时它还支持名字参数,即命名参数。

比如:  msgbox(Prompt:="提示框来了", Button:=vbOKOnly)

命名参数的好处就是顺序可以乱,程序自动确定相应的参数值。对于一个函数或方法有很多参数进,好处是显而晚风的。

第一个实例只有surfer的壳子,没有内容,正如excel打开后,没有book和sheet一样。

需要添加一些文档、图形及表之类的。

六、开始的过程一般这样:

dim srf  as Object

set  srf=createobject("surfer.Application") ‘即dim srf as new surfer.application

主程序创建出来后,就要加入东西:

dim doc  as object   '定义绘图对象

set   doc=srf.documents.add(1)  '加入一个对象,这个1表示srfDocPlot 即绘图文档

生成一个surfer绘图窗体:

dim winPlot  as object

Set  winPlot=doc.windows(1)     '设置一个新绘图窗体。

现在加一个绘图窗体。

注意:在vb中都是用I开头的接口,比如文档对象:IDocument。所以找不到对象时,试试I开头的。或者F2从对象浏览器中查找

七、操作图形

VB并不能把surfer”拿进“来进行操作,它只是控制它。

常用的图形方法,就是用VB控制surfer,让surfer来做它专精的事,最后的结果保存为图片。然后VB再把这个图片入到VB程序中来。

任意原始数据在处理前都必须进行网格化,形成均匀的网格文件,为下一步的绘图做好准备。

网格化方法是Application的方法,它有50多个参数,吓!是这么多!如果用位置参数固定位置写的话,得累死人。

所以这里用命名参数法,特定指定同个就行了,其余采用默认值。命名参数的好处就体现出现了。

这里采用surfer8中samples例子文件列中DEMOGRID.dat数据来网格化。

Option Explicit
Dim srf As New Surfer.Application '类似excelPrivate Sub Command1_Click()Dim doc     As Surfer.IDocument '类似bookDim winPlot As Surfer.IWindow   '类似sheetsrf.Caption = "白话魔法师"  '标题srf.Visible = TrueSet doc = srf.Documents.Add(srfDocPlot)Set winPlot = doc.Windows(srfWinPlot)'网格化一个dat文件srf.GridData DataFile:=App.Path & "\DEMOGRID.Dat", xCol:=1, yCol:=2, zCol:=3, algorithm:=srfKriging, showreport:=False, _outgrid:=App.Path & "\DEMOGRID.grd"
End Sub

DataFile是数据源,即Dat文件所在

outgrid是目标所在,即保存位置

结果:在工程保存目录 中存放网格文件。

回顾一下对象模型,对于图形的操作,理清创建对象的先后

Application->Documents->PlotDocument->Shapes->mapFrame->Overlays->这才到了我们的各种图

添加图形时返回的是mapFrame对象,含坐标系及相应的通用属性。

比如: set mapFrame=shapes.addContourMap("demogrid.grid")

它并不是等值线本身,因为它包含坐标轴等,要取得等值线就得在这个集合中取第一项。

如:  Set contourMap=MapFrame.overLays(1)

再看一个例子:

Option Explicit
Dim srf As New Surfer.Application '类似excelPrivate Sub Command1_Click()Dim doc     As Surfer.IDocument '类似bookDim winPlot As Surfer.IWindow   '类似sheetsrf.Visible = True          '设置为真便于我们查看后面程序的情况,正式发布时为FalseSet doc = srf.Documents.Add(srfDocPlot)Set winPlot = doc.Windows(srfWinPlot)'网格化一个dat文件srf.GridData DataFile:=App.Path & "\DEMOGRID.Dat", xCol:=1, yCol:=2, zCol:=3, algorithm:=srfKriging, showreport:=False, _outgrid:=App.Path & "\DEMOGRID.grd"Dim Shapes   As Surfer.IShapesDim mapFrame As Surfer.IMapFrame '各种图形总称,不是wireFrameSet Shapes = doc.ShapesSet mapFrame = Shapes.AddSurface(App.Path & "\DEMOGRID.grd")  '加入表面图(曲面图)Set mapFrame = Shapes.AddContourMap(App.Path & "\DEMOGRID.grd") '加入等值线'这样doc中的shapes集合中就有两个图了,下面进行叠加doc.Selection.DeselectAll '先清除全部所选择Shapes(1).Selected = True  '第一个图选中(曲面图)Shapes(2).Selected = True  '第二个图选中(等值线图)doc.Selection.OverlayMaps  '图层叠加If Dir(App.Path & "1.jpg") <> "" Then '检测是否有文件,有就删除它Kill App.Path & "1.jpg"End Ifdoc.Export App.Path & "1.jpg"    '输出图片Picture1.Picture = LoadPicture(App.Path & "1.jpg") '加载到VB中'    srf.Documents.CloseAll srfSaveChangesNo   '不提示存盘进行关闭
'    srf.Quit
End Sub

surfer 8 scripter 学习笔记(5)简单实战VB与Surfer相关推荐

  1. surfer 8 scripter 学习笔记(1)脚本对象模型

    此脚本专为surfer(类似VBA,但与VBA不完全相同),它操作surfer动作. 实际上,它和excel一样,VB通过语句可以进行操作excel或surfer. 同样,它和excel一样,本身也有 ...

  2. PCA(主成分分析-principal components analysis)学习笔记以及源代码实战讲解

    PCA(主成分分析-principal components analysis)学习笔记以及源代码实战讲解 文章目录 PCA(主成分分析-principal components analysis)学 ...

  3. python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试

    本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下 刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第 ...

  4. VC学习笔记:简单绘图

    VC学习笔记:简单绘图 SkySeraph Oct.29th 2009  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date ...

  5. STM32F429I-Discovery学习笔记--(1)简单上手和官方例程的下载与使用

    STM32F429I-Discovery学习笔记–(1)简单上手和官方例程的下载与使用 到手测试 收到开发板后我们要首先检查一下外观有没有磕碰破损,排针是否发生弯折,重要的是看一下JP3和CN4处的跳 ...

  6. Tensorflow2学习笔记:简单灰度图分类

    Tensorflow2学习笔记:简单灰度图分类 相关介绍 实验环境 实验步骤 导入相关库 导入数据集 浏览数据 预处理数据 构建模型 设置层 编译模型 训练模型 向模型馈送数据 评估准确率 进行预测 ...

  7. 冰冰学习笔记:简单了解protobuf

    欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...

  8. Netty学习笔记(六) 简单的聊天室功能之WebSocket客户端开发实例

    在之前的Netty相关学习笔记中,学习了如何去实现聊天室的服务段,这里我们来实现聊天室的客户端,聊天室的客户端使用的是Html5和WebSocket实现,下面我们继续学习. 创建客户端 接着第五个笔记 ...

  9. 【Python学习笔记】简单调用百度API应用

    #本文一切代码及理论均来自于郑秋生.夏敏捷二位老师主编<Python项目案例发 从入门到实践>一书,本人仅做微改.创作本文的目的仅为总结本人的学习过程和成果,借此巩固.可能存在许多疏漏之处 ...

最新文章

  1. 用Python发送邮件[zt]
  2. 中企ITIL需软落地
  3. android debug bridge tools_如何优雅的管理多环境下的Android代码
  4. private-bower
  5. springboot导入项目依赖报错_如何解决spring boot 项目导入依赖后代码报错问题
  6. 经纬度中度与度分秒的转换公式是什么,如114.629度=()度()分()秒
  7. HTML5的input color系统颜色选择器
  8. ios隐藏导航栏底线条和导航、状态栏浙变色
  9. 深入学习IOZone【转】
  10. 用nvidia-docker跑深度学习模型
  11. Package Cache搬家
  12. 电脑系统或者office系列使用小马激活工具,电脑开机桌面出现假的Edge浏览器
  13. 红帽子linux9百度云,红帽 Red Hat Linux相关产品iso镜像下载【百度云】
  14. sip gw功能包括_米尔MYD-C335X-GW开发板,为工业网关量身打造
  15. OpenCV/kornia/Pillow/Halcon/NI Vision/MIL/*计算机视觉资料汇总
  16. KEIL编译程序电脑卡的问题
  17. 河南最新道路货物运输驾驶员考试真题及答案解析
  18. 集线器、路由器、网桥(桥接器)、网关、网线、交换机、中继器(转发器)、网卡工作在哪一层
  19. 动态规划(DP)算法介绍
  20. 为什么要配置环境变量,配置环境变量有什么好处?

热门文章

  1. java实现word下载_java中如何实现下载word功能
  2. 大学生bootstrap框架网页作业成品 bootstrap响应式网页制作模板 学生家乡网页bootstrap框架网站作品 html静态网页设计制作 dw静态网页成品模板素材网页
  3. linux网卡永久生效命令,Linux/CentOS服务器 一个网卡绑定多IP地址(永久设置)
  4. 华为手机无信号显示无服务器,华为手机插卡显示无服务怎么办
  5. Oracle在Windows系统中出现的ORA-27100: shared memory realm already exists 的奇怪现象
  6. 在服务器上面运行项目
  7. 大话西游2服务器维护,《大话西游2》4月2日维护公告
  8. java在微信朋友圈中植入广告_如何看待微信朋友圈硬广植入?
  9. 解决cmd无法切换路径
  10. Linux pipe