VB可视化编程的设计方案_第1页
VB可视化编程的设计方案_第2页
VB可视化编程的设计方案_第3页
VB可视化编程的设计方案_第4页
VB可视化编程的设计方案_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 视化编程的设计方案 第一章 绪 论 面状符号的填充在地理信息系统、计算机图形学中都有充分的提到。 信息是用文字、数字、符号、语言、图像等的内容、数量或特征,从而向人们(或系统)提供关于现实世界新的事实和知识,作为生产、建设、经营管理、分析和决策的依据。信息技术是当今世界高技术群的代表,它可以帮助人们收集情报、揭示问题和预测未来,极大地扩大和增强人类适应自然的能力,为人类社会带来更大的益处。地理信息系统是一种十分重要的空间信息系统,它是在计算机硬件、软件系统的技术支持下,对整个或部分地球表层空 间的地理分布数据进行采集、储存、管理、运算、模拟、分析、显示和描述的技术系统。由郭志达主编的地理信息系统原理与应用一书中的第 6章中讲到了符号及空间资料的可视化。 计算机图形学是人类近 30 年来在科学技术领域中取得的一项重大成就。国际标准化组织给计算机图形学做出了如下定义:“计算机图形学是研究通过计算机将数据转换为图形,并在专用显示设备上显示的原理、方法和技术的学科。”在发达国家中,计算机图形学已经广泛地应用于工程技术与社会生活的各个领域之中,如机械、电子、建筑、航空航天、交通运输等等。由焦永和主编的计算 机图形学教程(第二版)一书中详细地介绍了有关区域填充的问题,同时,由孙家广主编的计算机图形学中也有相关的介绍。 像上面提到的介绍面状符号的填充的书籍不胜枚举,在这里,我就想大家介绍这几本。下面就具体地说说我是如何实现面状符号的填充的。 在地图中,往往需要用一区域表示地物、地貌,所以要对区域进行填充颜色或图案以示区别。在这次设计中,我用的是编程的方法来实现这一目的的,更进一步讲是用程来实现的。 众多编程语言中比较容易理解、掌握的一门语言。本次设计的具体做法是:首先,先画出一任意多边形(设计当中 我是用五边形为例的),然后求出该多边形的最小外接矩形,再对最小外接矩形进行划分,将其划分为 出这些小矩形的中心坐标,然后判断哪些小矩形是位于多边形的内部的,做这一判断有很多种方法,在这次设计中介绍了三种方法:求交法、栅格法、面积法。最后,对位于多边形内部的小矩形进行填充,比如说以小矩形的中心为中心画圆,在这里还得判断个别小矩形的中心离多边形边的距离是否大于所填圆的半径,对那些小于半径的小矩形不予以填充,至此,整个设计就结束了。 由于设计者的水平有限,所以设计的结果不是很完美,仍然存在着缺陷,像设 计程序仅仅适用于凸多边形,而对于凹多边形就不适用了,这是因为在判断哪些小矩形位于多边形内部时,我用的是面积法,面积法是位于多边形内部的点与多边形各顶点连接构成的三角形的面积和等于多边形的面积,而面积法不适用于凹多边形。 2 第二章 基础知识 第一节 介 一、 述 称 美国微软( 司推出的 境下的软件开发工具,使用 以既快又简单地开发 用软件。 指开发图形用户界面( 方法。 意思是“视觉的”或“可视的”,也就是直观的编程方法。在 引入了控件的概念,如各种各样的按钮、文本框、复选框等。 这些控件模式化,并且每个控件都由若干属性来控制其外观、工作方法。这样,采用 法无需编写大量代码去描写界面元素的外观和位置,而只要把预先建立的控件加到屏幕上。 指 言 ,之所以叫做“ 是因为它使用了 言作为代码。 随着微型计算机技术的飞速发展,美国微软公司的 其具有多任务性,图形用户界面,动态数据交换,对象链接与嵌入等强大功能,而成为当今微型计算机操作系统的主流产品。众多的软件开发者已从原来的 件开发转向多商用软件公司为适应这一趋势推出了不少 境下的软件开发工具,如 +、 +、 等。使用仅可以感受到 来的新技术,新概念和新的方法,而且 目前众多件开发工具中效率最高的一个。另外 列产品得到了计算机工业界的承认,得到了许多软件开发商的大力支持。 二、 发展过程 早在 1991 年,为了简化 用程序的开发,微软公司推出了 看法以及使用 方法。 1992 年,经过对 修改后, 微软推出了 1993 年经再次修改完善后, 市了。从这一版开始, 几乎是无所不能的了。 1995 年,随着 5 轰轰烈烈的发布, 随之问世了。 1997 年,微软公司开始推出 发工具套件 中包括了 1998 年发布的 8 则包括了 前的版本主要应用于 境中 16 位程序的开发,从 后的版本则只能运行在 5 或 T 操作系统 3 下,是一个 32 位应用程序的开发工具。 微软推出的 族最新成员,它共有 3 个版本:标准版,专业版,企业版。 三、 特点 目前所有开发语言中最简单,最容易使用的语言 。作为程序设计语言, 1. 可视化的设计平台 用传统程序设计语言编程时,需要通过编程计算来设计程序的界面,在设计过程中看不到程序的实际显示效果,必须在运行程序的时候才能观察。如果对程序的界面不满意,还要回到程序中去修改,这一过程常常需要反复多次,大大影响了编程的效率。供的可视化设计平台,把 面设计的复杂性“封装”起来。程序员不必再为界面的设计而编写大量的程序代码,只需按设计的要求,用系统提供的工具在屏幕上“画出”各种对象, 动产生界面设计代码,程序员所需要编写的只 是实现程序功能的那部分代码,从而大大提高了编程的效率。 2. 面向对象的设计方法 用面向对象的编程方法( 把程序和数据封装起来作为一个对象,并为每个对象赋予相应的属性。在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具“画”在界面上,由 动生成对象的程序代码并封装起来。 3. 事件驱动的编程机制 过事件执行对象的操作。在设计应用程序时,不必建立具有明显开始和结束的程序,而是编写若干个微小的子程序,即过程。 4. 结构化的设计语言 在结构化的 言基础上 发展起来的,加上了面向对象的设计方法,因此是更具有结构化的程序设计语言。 5. 充分利用 源 供的动态数据交换( 程技术,可以在应用程序中实现与其他 不同的应用程序之间进行通信的功能。 供的对象链接与嵌入( 术则是将每个应用程序都看作一个对象,将不同的对象链接起来,嵌入到某个应用程序中,从而可以得到具有声音,影像,图像,动画,文字等各种信息的集合式文件。 可以通过动态链接库( 术将 C/C+或汇 编语言编写的程序加入到 是调用 用程序接口( 数,实现 具有的功能。 6. 开放的数据库功能与网络支持 有很强的数据库管理功能。不仅可以管理 式的数据库,还能访问其他外部数据库。另外, 提供了开放式数据库链接( 能,可以通过直接访问或建立连接的方式使用并操作后台大型网络数据库。在应用程序中,可以使用结构化查询语言( 接访问 的数据库,并提供简单的面向对象的库操作命令,多用户数据库的加锁机制和网络数据库的 编程技术,为单机上运行的数据库提供络接口,以便在分布式环境中快速而有效地实现客户 /服务器( 案。 4 第二节 视化编程的基本概念 传统的编程方法使用的是面向过程、按顺序进行的机制,其缺点是程序员始终要关心什么时候发生什么事情,处理 境下的事件驱动方式工作量太大。 用的是面向对象、事件驱动编程机制,程序员只需编写响应用户动作的程序,而不必考虑按精确次序执行的每个步骤,编写的代码相对较少。另外, 供的多种“控件”可以快速创建强大的应用程序而不需涉及 不必要的细节。 用的“可视化编程”方法,是“面向对象编程”技术的简化版。在 境中所涉及到的窗体、控件、部件和菜单项等均为对象,程序员不仅可以利用控件来创建对象,而且还可以建立自己的“控件”,这是 境下的编程新概念。 一、 对象的属性、事件和方法 在现实生活中,任何一个实体都可以视为一个对象( 在 ,常用的对象有工具箱中的控件、窗体、菜单、应用程序的部件以及数据库等。从可视化编程的角度来看,这些对象都具有属性和方法。简单地说,属性用于描述对 象的一组特征,方法为对象实施一些动作,对象的动作则常常要触发事件,而事件又可以修改属性。 1. 对象的属性 每个对象都有一组特征,称之为属性。不同的对象有不同的属性。在可视化编程中,每一种对象都有一组特定的属性。许多属性可能为大多数对象所共有,还有一些属性只局限于个别对象。每一个对象属性都有一个默认植,如果不明确地改变该值,程序就将使用它。通过修改对象的属性能够控制对象的外观和操作。对象属性的设置一般有两种途径: ( 1) 选定对象,然后在属性窗口中找到相应的属性直接设置。这种方法的特点是简单明了,每当选择一个属性 时,在属性窗口的下部就显示该属性的一个简短提示,缺点是不能设置所有所需的属性。 ( 2) 在代码中通过编程设置,格式为 对象名 属性值 如 轻松轻松学用 2. 对象的事件 事件就是对象上所发生的事情。 在 ,事件是预先定义好的、能够被对象识别的动作,如单击 (件、双击 (件、装载 (件、鼠标移动 (件等,不同的对象能识别不同的事件。当事件发生时, 检测两条信息,即发生的是哪种事件和哪个对象接受了事件。 每种对象能识别一组预先定义好的饿事件,但并非每一种事件都会产生结果,因为是识别事件的发生。为了使对象能够对某一事件做出响应,就必须编写事件过程。 事件过程是一段独立的程序代码,它在对象检测到某个特定的事件时执行。一个对象可以响应一个或多个事件,因此可以使用一个和多个事件过程对用户或系统的事件作出响应。程序员只需编写必须响应的事件过程,而其他无用的事件过程则不必编写。 3. 事件的方法 一般来说,方法就是要执行的动作。用户对具体实现过程并不关心,关键是最终收 5 到的效果。 方法与事件过程类似,它可能是函数,也可能是过程,它用于完成某种特定功能而不能响应某个事件。每个方法完成某个功能,但实现步骤和细节用户既看不到、也不能修改,用户能做的工作就是按照约定直接调用它们。 方法只能在代码中使用,其用法依赖于方法所需的参数的个数以及它是否具有返回值。当方法不;不需要参数并且也没有返回值时,可用下面的格式调用对象方法。 对象名 如图片框有刷新显示方法,在事件过程代码中调用该方法的代码为: 、 控件 控件是预先定 义好的、程序中能够直接使用的对象,每个控件都有大量的属性、事件和方法可在设计时或在代码中修改和使用。利用控件编程使程序员免除了大量重复性的工作,能够以最快的速度和效率开发具有良好用户界面的应用程序。 的控件通常分为 3 种类型: ( 1) 内部控件。默认状态下工具箱中显示的控件都是内部控件,这些控件被“封装”在 件中,不可从工具箱中删除。 ( 2) 件。这类控件单独保存在 型的文件中,其中包括各种版本供的控件。 ( 3) 可插入的对象。 工具箱中的每个控件都用一个图形按钮来表示,主要包 括表 2出的 19 个内部控件。 表 2B 的内部控件 图片框控件 用于显示图形文件或文本文件,也可以作为其他控件的容器 标签控件 创建一个标签对象,用于保存不希望用户改动的文本,如复选框上面或图形下面的标题 文本框控件 创建用于显示和输入数据的文本框对象,用户可以在其中输入或更改文本 框架控件 用于美化其他控件并提供分组功能 命令按钮控件 创建命令按钮对象,用于执行命令 复选框控件 创建复选框对象,允许用户选择开关状态,或显示多个选项,用户可从中选择多个选项 选项按钮控件 创建选项按钮组对象,用于显示多个选项,用户只能从中选择一个选项 组合框控件 创建组合框或下拉列表框对象,用户可以从列表项中选择一项或人工输入一个值 列表框控件 创建列表框对象,用于显示供用户选择的列表项。当列表项很多,不能同时显示时列表可以滚动 6 水平滚动条与垂直滚动条控件 用于提供简便的定位。还可以模拟当前所在的位置 计时器控件 创建计时器对象,以设定的间隔捕捉计时器事件。此控件运行时不可见 驱动器列表框控件 显示当前可用的驱动器,供用户选择 文件列表框控件 显示当前路径下的文件名列表,供用户选择 形状控件 创建形状对象,设计时用于画各种类型的形状。 线条控件 创建线条对象,设计时用于在窗体上画各种类型的线条 图像控件 创建图像对象,在窗体上显示位图、图标、 图形文件。单击时,其动作类似于命令按钮 数据控件 用于连接数据库,并在窗体的其他控件中显示数据库信息 器控件 创建 器对象,用于把其他应用的数据嵌入到 应用程序中 三、 窗体对象 窗体也就是平时所说的窗口,它是 程中最常见的对象,也是程序设计的基础。 1. 窗体的结构 同 题栏、最大化 /复原按钮、最小化按钮、关闭按钮以及边框,如图 2 图 2体的结构 7 创建新窗体的步骤如下: ( 1) 从“工程”菜单中选择“添加窗体”菜单项。 ( 2) 缺省情况下系统将显示如图 2加窗体”对话框。 ( 3) 该对话框的“新建”选项卡用于创建一个新窗体,列表框中列出了各种新窗体的类型,其中选择“窗体”选项时,建立一个空白的新窗体,选择其他选项时则建立一个预定义了某些功能的窗体。 ( 4) 单击“打开”按钮,一个新的空白窗体被加入到当前工程中,同时会显示在屏幕上,如图 2 图 2添加窗体”对话框 图 2加新窗体 2. 窗体的属性 8 常用的窗体属性如表 2 表 2用的窗体属性 属性 用 途 定窗体的名字,同时也是磁盘上的窗体文件名,扩展名为 定标题栏中显示的文本 于确定窗体的背景颜色 于决定窗体的边框风格 定窗体是否具有控制菜单 定窗体的标题栏中是否具有最大化按钮 定控制窗体 是否可移动 过取值决定窗体是正常、最小化还是最大化状态 第三节 视化编程的环境 一、 属性窗口 在 成环境的默认视图中,属性窗口位于工程窗口的下面。按 键,或单击工具栏中“属性窗口”按钮,或选取“视图”菜单中的“属性窗口”子菜单,均可打开属性窗口,如图 2 图 2性窗口 二、 工程窗口 工程窗口类似于 的资源管理器,在这个窗口中列出了当前工程中的窗体和模块,其结构用树状的层次管理方法显示。如图 2示。 9 图 2程窗口 三、 代码窗口 “代码窗口”也称“代码编辑器”,在“代码窗口”中有“对象下拉列表框”和“代码区”,如图 2 图 2码窗口 10 第三章 符号 第一节 地图符号及其分类 空间要素以其位置和属性为特征。为了在地图上表示某一空间要素,我们用地图符号来指示该要素的位置,并用该符号与一个或一组视觉变量的组合来显示该要素的属性数据。比如,用红色粗线代表州际公路,而用黑色细线代表州级公路。在此二例中,线状符号 均表征了公路的位置,而线的宽度和色彩这两种视觉变量与线状符号一起,将州际公路和州级公路区分开来。 选择合适的地图符号和视觉变量是数据显示主要关注的一个方面。对栅格数据而言,地图符号的选择已不是一个问题,因而无论被描述的空间要素是点、线或多边形,地图符号都由像元组成。然而,对矢量数据而言,常用的地图符号像要素类型分类一样,也分为点、线、面三类。从而,为矢量数据选择地图符号的通用法则如下:点状符号适用于点状要素,线状符号适用于线状要素,面状符号适用于面状要素。 对上述数据 个 目通常会用到诸如高程、气温和降雨量等立体或三维数据,然而却没有相应的立体符号,只得用点、线和面状符号表示这些立体数据。另一个常见的例外是用多边形标识位置上的点状符号来显示合计数据,如县或州的人口总数。 地图符号系统中的视觉变量包括形状、大小、纹理、图案、色相、色值和彩度。例如,一幅地图可用大小不同的圆圈来表示不同规模等级的城市。另一方面,图案(符号斑纹的类型)则更适合于表征标称或定性数据。比如,一幅地图可用不同的面状图案代表不同的土地利用类型。 现实世界尽管形态各异,千变万化,但是在空间资料抽象表达时,将其 分为点状地物、线状地物和面状地物,因而表达地物的符号也相应地有点状符号、线状符号和面状符号 一、 点状符号 点状符号是不依比例尺表示的小面积地物(如油库、水井)或点状地物(如测量控制点)等。点状符号的特点是:图形固定,不随它在图面上的位置的变化而变化;符号都有确定的定点位和方向;点状符号图形大多比较规则,由简单几何图形构成。 对点状符号可采用直接编码和间接编码两种方法。 直接编码法是直接以每一步的走步方向的代码构成信息块。例如,编写西文字母“ B” 的信息块,可其分解成不同方向的步数 ,并按一定的规则排列,加上相应的抬落笔编号,就可构成西文字母“ B”的信息块。 间接编码法是以位移网格代码构成信息块的,绘图时经转换得到走步方向和步数。它可分为格点编码法和非格点编码法。这里只介绍计算机地图制图中较适用的格点编码法。格点编码法是:对任意范围内所设的正交网格交点赋予一定内容的数码,然后用手工方法在该范围内画符号,将符号线划通过的网格交点的数码按一定的顺序排列,就得到符号的信息块。一般地说,网格越精细,符号质量越高,但信息块数据量就越的大。网格的精细度取决于所绘符号的复杂程度。 用编程的方 法绘制点状符号也是经常用的方法。现以圆的绘制说明其算法。 11 任何一个圆都可以用一个正多边形逼近它,其边数越多,圆弧就越显光滑。然而,多边形边数太多,则绘图时会因墨水笔或纤维笔渗透过多的墨水而使圆周不清晰,当然也会浪费时间。 因此,只要保持正多边形与圆周之间的拱高在某一限差之内,使其多边形看起来光滑即可。 但是,随着计算机的飞跃发展,在 制圆仅仅需要调用 圆、弧。语法为: .x,y),说明: ( 1)( X,Y)圆、椭圆、弧的中心坐标。 ( 2) 指定圆、椭圆、弧的半径。 ( 3) 果被忽略,则使用 性值。 ( 5) ( 6) ( 7) 可以省略语法中的某个参数,但不能省略分隔参数的逗号。 画圆的程序代码如下: s s X Y s s X Y 500 行结果如图 3 3、 线状符号 线状符号是长度依比例尺表示而宽度不依比例尺表示的符号,用于表示呈线状(如 12 边界线)或细条带状延伸的地物(如河流、道路)。线状符号的特点是:都有一条有形或无形的定位线;符号可进一步划分为曲线、直线、虚线、并行线、沿定位线连续配置点符号等;符号进一步分解为单一特 征的线状符号,即一线状符号可由若干条具有单一特征的线状符号组成。 线状符号采用对重复元进行编码。重复元是指组成线状符号的基本单元,对它亦可类似上述方法编码,绘制时须按中轴线位置和走向逐点变换后,连续配置成完整的土堤符号。 当符号图形复杂时,上述编码不能适用,可直接用伴有抬落笔码的坐标矢量的有序 集合作为信息块。完整的信息块还应包括符号色代码等。 该方法是由绘图子程序按符号图形参数计算绘图矢量并操纵绘图笔绘制地图符号的方法。对每一个地图符号或同一类型的一组地图符号编一个绘图子程序,这些程序组成一个程序 库。在绘图时按程序(即符号)的编号调用库中相应的程序,输入适当的参数,该程序将根据已知数据和参数计算绘图矢量,并产生驱动绘图机的命令,从而完成地图符号的绘制。这种方法一般只适用于那些能用数学表达式描述的地图符号。编程的过程是,先建立描述符号的数学模型,然后设计流程图和编写源程序,最后上机调试并确认优化后入库。应注意的是,尽量用一个程序能绘制多个符号,如绘圆和椭圆就可用一个程序完成。程序功能的大小完全取决于对要素的精心分类和选择适当的参数。 三、 面状符号 面状符号是指在二维平面上能按一定比例尺表示 地物分布范围的符号,用于表示面状分布物体或地理现象。面状符号的特点是:有一条封闭的轮廓线,多数面符号是在轮廓线范围内配置不同的点状符号、绘阴影线或涂色。这些符号的共同点就是在面状符号范围线内填绘不同方向、不同间隔、不同粗细的晕线,或填绘呈一定规律分布的个体符号,花纹或颜色来反映这些现象的质量特征或数量上的差异。 实际上,点、线、面符号不是孤立的,他们之间存在一定的联系。线符号中往往包含点符号,面符号中也可能包含线、点符号。 在下面的一章节中,我们主要讨论有关区域填充的问题,即面状符号的填 充。 13 第四章 区域填充 区域填充是指在一个有界区域内填充某种颜色或图案,如机械制图中的 45 度剖面线。区域填充分为两类:一类叫多边形填充,一类叫种子填充。两者的前提条件不同,多边形的填充需要提供多边形各顶点的坐标及填充色或图案;而种子填充则要求给出边界颜色特征及区域内的一个点(即种子点)的坐标。 第一节 多边形填充 一种常用的填充方法是按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色或图案显示这些区间的像素,从而完成多边形的填充。 多边形填充首先需 要求出扫描线与边界的交点,利用边的相关性可以简单有效地解决这个问题。当一条扫描线与多边形的某一条边线有交点时,其相邻扫描线一般也与该边线相交,而且扫描线与该边线的交点,很容易从前一条扫描线与该边的交点求出。 利用边的这种相关性,不必算出边线与各条扫描线的全部交点,只需以边线为单位,对每条边建立一个边记录,其内容包括:该边 Y 的最大值,该边底端的 一条扫描线到下一条扫描线间的 及指示下一个边记录地址的指针。 下面用编程( 方法实现对多边形(五边形)进行符号的填充(填充圆圈)。 第二节 对任意多边形填充符号 第一步:画一任意多边形,在这用五边形为例。在 立应用程序用户界面,选择“新建”工程,双击窗体的空白部分,进入到代码编辑窗口,单击“对象”下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论