1、计算机图形学计算机图形学第三章交互技术与用户接口第三章交互技术与用户接口主讲人:刘铭主讲人:刘铭E-MAIL:2022年8月9日4时07分2内容摘要n在计算机图形学中,交互技术与用户接口是必不可少的部分。图形与交互式技术的完美结合,可以为用户提供简单、方便、美观的操作界面,即用户接口。由于交互技术在计算机图形学中的普遍使用和重要性,人们通常也将计算机图形学称为交互式计算机图形学。随着计算机软、硬件技术的发展,交互技术和用户接口技术已从应用程序中独立出来,提出了用户接口管理系统(UIMS:User Interface Management System)的新概念,并逐渐形成形影的学科。目前,许多
2、面向对象的程序语言都提供了对交互式技术的支持。2022年8月9日4时07分3内容摘要 用户接口是人与计算机交互的界面,人-机交互方式从问答方式、菜单交互方式发展到现在的图形交互方式、窗口管理系统、图标以及其它丰富多彩的图形界面,已成为流行的人-机交互环境。本章主要内容包括:用户接口的常用形式;交互式设备、交互式任务和交互技术;交互系统的概念和方法 重点在于了解交互任务和方式,以及交互技术的实现原理。2022年8月9日4时07分43.1 用户接口的常用形式用户接口的常用形式 用户接口通常由图形软件来实现。在各种应用程序中,实现用户接口有三种形式,即子程序库、专用语言和交互式命令。n1子程序库 这
3、种形式的基本思想是选择一种合适的高级程序设计语言,如C、C+、Java等作为主语言,用此主语言扩展一系列的过程与函数用以实现有关的图形设计和处理。在此情况下,应用程序包括两部分:一是主语言的程序;二是扩展的过程或函数调用语句。2022年8月9日4时07分5n 常用的子程序库有ISO公布的图形核心系统GKS、GKS-3D、PHIGS、PHIGS+等,美国SGI公司推出的图形程序库GL和OpenGL。这类子程序库通常提供多种主语言的联编形式,其功能概括如下:n()基本图形的生成,包括点、线、圆弧、字符和自由曲线等;n()坐标变换,支持平移、旋转、比例、对称、投影和裁剪等操作;n()设置图形属性和显
4、示方式。图形属性包括线型、线宽、填充图案、字体和光标,显示方式包括颜色、饱和度、亮度以及明暗效应等形式。n()输入输出子程序:启动不同的输入输出设备,并对相应的事件队列进行处理;n()真实图形的处理:包括选择消除隐藏线(面),不同的光照模型,生成真实图形的不同算法等;n()用户界面的设计:包括窗口设计、菜单设计、对话框、列表框等交互界面。2022年8月9日4时07分6 用子程序库设计用户接口,使用方便、便于扩充,便于在用户自己编写的程序代码中加入子程序库中的函数,可以充分利用高级程序设计语言本身具有的功能,实现用户希望产生的图形和交互处理。但是,这种方式实现用户界面需要不断地编写、调试和修改源
5、程序,不形象直观。子程序库函数的调用格式要随所用主语言而定,对子程序库的使用应遵循相应主语言对子程序或函数的调用约定。2022年8月9日4时07分7n2专用语言 图形专用语言是专门用于图形处理的程序设计语言,常见的形式有两种:一是解释执行,即扫描专用语言的每一条语句,解释并执行。如Visual BASIC中的Color、Line等语句。二是编译型语言,经编译、装配链接后生成可执行代码。Adobe公司推出的页面描述语言(PostScript,简称PS语言)是一个优秀的图形专用语言。它是一种解释型的语言,能对正文、图形和图像所产生的任意组合进行描述,并能支持包括条件执行、过程和变量在内的许多程序设
6、计语言的特征。PS含有数百条功能很强的命令,并能对复杂的页面进行高效而精确的描述。目前,PS语言不仅在照排系统、出版系统中有广泛的应用,而且在图形处理、多媒体技术领域都有良好的应用前景。2022年8月9日4时07分8n3交互命令 交互反映了人与计算机运行的程序之间传递信息的形式。如在AUTOCAD中的Command:输入交互式图形命令进行绘图。交互式用户接口就是基于某种模型,实现用户所需要的输入、选择、拾取和增、删、改操作。交互式用户接口是用户与应用系统的核心功能模块之间的界面,它负责接收用户向系统输入的操作命令及参数,经检验无误后调出相应的应用程序模块执行之,执行的结果在以一定的形式通知用户
7、。2022年8月9日4时07分9 交互处理中最常用的增、删、改操作,另外还有询问、设置等,操作的对象包括图形、属性以及字符串说明。定位和拾取是增、删、改操作的基础。增操作一般对应输出,其动作包括:设定为点、选择输出内容、输入有关参数、输出存储结果。删操作对应的动作有:拾取删除对象、确认拾取的对象、删除对象、修改存储结构中的内容。改操作应执行的内容是:拾取修改对象、确认拾取的对象、输入修改参数、输出修改结果,经确认后存储结果。2022年8月9日4时07分103.2 交互设备、交互任务和交互技术交互设备、交互任务和交互技术n3.2.1 交互设备交互设备交互设备通常是计算机的外部设备,它是实现交互技
8、术、完成交互任务的基础。从逻辑上分,交互设备分为定位、键盘、选择、取值和拾取五种设备。不同的交互任务可以选择不同的交互设备来完成。2022年8月9日4时07分11n1定位设备定位设备分为绝对坐标或相对坐标、直接或间接、离散或连续三类。如数字化板、触摸屏是绝对坐标设备,它们都有绝对原点,定位坐标是相对原点来确定的。而像鼠标器、跟踪球、操纵杆等设备没有绝对原点,定位坐标是相对前一点的位置来确定的。相对坐标设备可指定的范围可以任意大。直接设备像触摸屏,用户可直接用手指指点屏幕来实现定位。间接设备像鼠标器,用户移动屏幕上的游标,并不是直接在屏幕上操作。连续设备是一种把手的连续运动变成游标的连续运动,向
9、鼠标器、操纵杆、数字化板等设备,而键控游标即为离散设备。连续设备与离散设备相比使用自然、快捷、方便,同时离散设备难于精确定位。2022年8月9日4时07分12n2键盘设备键盘是应用最早的交互设备,它同时具有定位、选择、取值等多种功能,它主要是通过键盘输入相应的命令和参数,或直接通过键盘命令(如Ctrl,Shift,Ins,Del等)来完成交互式任务。n3取数设备某些取数设备是有界的,像一把尺子或一个度盘,当尺子或度盘上的游标到达用户需要的数值后,按一下鼠标器确认键或回车键,即可把此数输入到数据域内。一般是把尺子的一端作为初始值,另一端为终止值。2022年8月9日4时07分13n 4选择设备功能
10、键是最常用的选择设备,按下某一个功能键即可实现用户希望的某个功能。键盘上的每一个键都可经过应用程序的重新定义而变为功能键。通过游标选择指定的项或图,其实质是通过游标的位置实现选择,它不是选择设备。n 5语音识别器这是一种目前还没有普遍使用但很有发展前途的交互设备,这也是一种综合的交互设备,用它可进行选择、取数和定位。但由于对不同人的发音识别精度还很低,故语音识别器的正确率还不高,离实用化还有一定距离。2022年8月9日4时07分14n6三维交互设备三维交互设备现在还不成熟,从原理上看,不少二维交互设备,如操纵杆在旋转的同时允许其可以移动,则可以形成三维效果。但真正实用的三维交互设备目前已有两种
11、,一是基于三维传感器的三维坐标测量仪,二是数据手套。用数据手套可以记录手指的位置和方向以及手指的运动轨迹,这为构造真正的三维交互式图形系统及虚拟现实环境奠定了基础。2022年8月9日4时07分153.2.2 基本交互任务和交互技术基本交互任务和交互技术交互技术是用户用交互设备把信息输入进计算机的不同方式,而交互任务是用户输入到计算机的一个单元信息。最基本的交互任务有四种,即:定位、字串、选择、取数。对于一个给定的交互任务,可用多种不同的交互技术来实现,如一个选择任务可通过鼠标在菜单中选一项,也可用键盘输入选择项的名字,还可以通过按一个功能键实现选择。类似的情况是一种交互设备可用于不同的交互任务
12、,如鼠标既可以用于定位,也可以用于选择。因此,交互任务是图形系统所要完成的目标,而交互技术则是完成交互任务的手段,并且交互技术的实现在很大程度上依赖于交互设备及其支撑环境。交互式图形系统的基本任务包括:定位、选择、文字输入和数值输入。下面结合各个基本交互任务,介绍一些常用的交互技术。2022年8月9日4时07分16n1定位定位用来给应用程序指定位置坐标。实现定位的交互技术通常有两种:一是把屏幕上的光标移到要确定点,再按下鼠标确认键;再就是用键盘直接输入点的坐标。定位设备可以是直接的(如光笔)或间接的(如数字化板、鼠标器、游戏棒),也可以是连续的(如鼠标器)或离散的(如光标控制键),也可以是绝对
13、的(如数字化板)或相对的(如鼠标器)。另外,用键盘上的上、下、左、右键可以移动光标。还可以将这些技术混合在一起,以便于精确的的定位。2022年8月9日4时07分17在定位技术中,需要的考虑的因素有:(1)坐标系统。在交互式图形系统中,一般有三种坐标系,即屏幕坐标系、用户坐标系和物体坐标系。(2)分辨率。定位任务中所要求的分辨率随应用程序的不同而不同。台板、鼠标器等定位设备的分辨率至少可以和分辨率为5002000的显示器一样高。(3)网格技术。在许多定位任务中,一个重要的视觉辅助工具就是在屏幕工作区中较低的亮度或较淡的颜色显示出网格作为背景,以帮助调整定位的位置,使定位点落在网格上。要实现网格化
14、,应用程序可以在定位点靠近某个网格点时,就将定位器的坐标截断到这个最近的网格点上,如 AUTOCAD中的grid和Snap命令。2022年8月9日4时07分18(4)反馈技术。不同定位方式需要不同的反馈形式,有两类定位方式:空间定位方式和数值定位方式。对于空间定位方式,例如,圆心定位,用户希望当鼠标靠近圆心时,应用程序能自动反馈出圆心位置。而在数值定位方式中,用户希望定位到(x,y)点,因此希望得到的反馈当然就是当前光标点的位置坐标。图4.1是另一个数值反馈的例子,当用鼠标交互式画矩形时,自动反馈显示出矩形的宽和高度。(6)方向性。在用鼠标器定位时,可以配合键盘上的Shift键,屏幕上的光标只
15、能做水平或垂直移动。2022年8月9日4时07分191.751.00图4.1 数值反馈2022年8月9日4时07分202选择选择 选择任务是指从一个被选集中挑选出一个元素来。在交互式图形学中,选择绘图对象是为了对这些对象进行修改、删除等操作。常用的选择技术有命令选择、操作数选择、属性选择和对象选择等。选择集一般分为定长和变长两种。命令、属性和对象类型的选择集一般是定长的,而在作图过程中的绘图对象经常变化,所以绘图对象的选择属于变长集。适合固定集的选择技术包括:n()指名技术:用键盘键入集合元素的名字、名字的缩写或元素的代码等选择一个元素或对象;n()功能键:使用与集合元素相对应的功能键;n()
16、菜单技术:在菜单中选择菜单项;n()模式识别:通过模式识别技术来选择符合要求的对象;2022年8月9日4时07分21适合变长集的选择技术包括指名和拾取两种技术。n(1)用指名方式选择对象:要求用户知道各种对象的名字,特别是在屏幕上显示对象很多、互相遮挡重叠的情况时,用指名方式选择对象比拾取更快和准确。另外,可以使用匹配符*和?进行多个选择。指名方式的最佳反馈形式是在键入每一个字母后,立即显示所有能与当前已键入的字串匹配的对象名。这有两个好处,一是可以帮助用户回忆起对象的全名,而是在没有二义性的情况下,即只有一个对象名与已键入的字串匹配时,用户就可以停止键入剩下的字符了。例如,在对象集 poly
17、line1,polyline2,polygon,cycle2022年8月9日4时07分22中,用户希望选择对象polygon。当输入p时,反馈显示3个元素polyline1,polyline2,polygon。直到键入polygon后,只显示唯一的元素polygon,这时用户就无需再继续输入剩下的字符了,确认后就唯一地选择了polygon对象。n(2)拾取对象:将屏幕上的光标移动到被选择对象上,再按下鼠标左键,即指示要拾取这个对象。一般被拾取的对象会以不同的颜色显示,已表示被选中。可以结合实验课程,熟悉AUTOCAD中的指名和拾取绘图对象的方法。2022年8月9日4时07分23n3文本输入文本
18、输入文本输入任务是指应用程序输入一个字符串。如键入一个插图说明、一个标注等。文本输入最基本的技术就是标准键盘,其次是菜单选择字符串和语音识别等。n4定量输入定量输入定量输入任务是指在某个最小值和最大值之间指定一个数值,例如温度、时间、透明度等数值量的输入。典型的交互式定量技术有:键盘输入数值;调节电位器的阻值产生相应的数值;用上下翻转数字的计数器选择数值;用光标移动屏幕上的标度盘或刻度尺上的指针来确定数值。图6.2是常用的交互式定量输入的示例。交互式输入数值时,反馈的形式非常重要。一般是提供数字反馈,这在用户知道要输入的数值时很有用。另一形式的反馈是可度盘或标尺上的指针,指示数值的大概位置。2
19、022年8月9日4时07分2409018027045(a)(b)7654321 (c)(d)图6.2 交互式定量输入2022年8月9日4时07分25n5定向技术定向技术 在指定的坐标系中确定形体的方向,此时需要有应用程序来确定其反馈类型、自由度和精度。n6定路经技术定路经技术 这是一系列定位和定向任务的结合,与时间、空间有关。2022年8月9日4时07分263.2.3 组合交互任务和技术 组合交互任务是由上述基本的交互任务组合而成的,主要有三种组合交互任务:对话框:用来设定多个参数;构造:用来构造需要两个或多个位置的形体;操作:修改已有的几何形体的形状,调整物体之间的相对位置。2022年8月9
20、日4时07分27n1对话框对话框 在交互过程中经常需要从一个选择集中选择多个元素,如字符属性有楷体、斜体、有粗体、细体,有空心字、实心体,有大小、对齐方式等。当弹出一张字符属性对话框后,如图6.3所示。用户可以从中选择多项,还可以在某些项输入用户希望的字符或数字。有些应用还希望从多个选择集中确定一组参数,如上面的字符属性中希望改变字符的颜色,这时还需要弹出一个色彩选择对话框,从中挑出用户希望的颜色。还有些应用要求对话框行、列设置滚动条。对话框是用户与系统进行信息交流的窗口。当系统执行的某个命令需要更多的信息或数据时,就弹出一个对话框,向用户提问,由用户填写或选择对话框中的各项,作为回答。202
21、2年8月9日4时07分28 对话框中常用的对象包括:n列表框:列表框可以选择多个选项,提供滚动条,从中只能选择一项;n下拉式列表:只能显示一个带下箭头的长方框,选择时可以通过按下箭头拉开列表以供选择。在下拉式列表中也只能选择一项。n单选项:多个选项前面都有一个圆标识,每次只能选择其中的一项。被选中的选项前面的圆中间包含一个黑点。n复选项:多个选项前面都有一个方框标识,可以从中选择多个选项,每次选中的选项前面的标识方框中包含一个差号。n文字输入框:用于输入文本信息或数字。当光标移入输入框时,光标变成闪烁的竖条,等待用户输入。n命令按钮:命令按钮用于启动一个可以执行的程序代码。一般包括“确认”或“
22、OK”,“取消”或“Cancel”,后跟省略号()的命令按钮将打开另一个对话框。2022年8月9日4时07分29图6.3 列表框示例图下拉列表框复选框列表框命令按钮2022年8月9日4时07分30n2构造技术构造技术 我们把作图看成一个构造的过程,这个过程实际上是选择作图命令和指定一系列定位点的过程。例如在选择画直线命令后,在作图区先后指定两个点就可以在这两个点之间画出一条直线。常用的构造技术包括橡皮筋技术、约束技术等。橡皮筋技术通常是在绘图过程中,可以使操作者能看到构造绘图的中间效果,并能够不断调整其位置和效果。例如,用橡皮筋技术画直线段,首先用鼠标选择直线段的起点位置,然后移动鼠标,这时就
23、在起点和鼠标当前点之间有一条连线,鼠标移动到不同位置,连线就连到什么位置,就像橡皮筋一样随光标移动。按下确认键,定下终点后,这条线段就确定下来了。利用橡皮筋技术可以实现用鼠标交互式画矩形、圆、椭圆、折线和多边性等图形。2022年8月9日4时07分31 约束技术分为水平约束、垂直约束和引力场约束三种。水平约束和垂直约束是为了画出水平和垂直的直线段。通过其它辅助键的配合(如Shift键),光标只能在水平和垂直方向移动,因此可以画出精确的水平线和垂直线。引力场约束技术可以帮助用户把光标点精确地定位在某个端点或直线上。引力场是一种想象的约束场,一旦光标进入这个范围,它就被吸引到某个特殊点或直线上。例如
24、,在选择圆心点、拾取直线图形等操作中,常用到引力场约束技术。2022年8月9日4时07分32n3动态操作动态操作 动态操作包括:图形对象的拖动、旋转、缩放和形变等;选择拖动命令后,首先在作图区用定位设备(如鼠标)拾取某个图形对象,再按住键移动光标,则这个被选中的图形对象就会随着光标的移动而移动。放开键后,图像对象就固定下来了。选择旋转命令后,首先选择要旋转的图形对象,选中的图形对象中心将显示一个图标代表旋转的中心。用光标先将这个图标拖到实际的旋转中心,再按住定位器的键移动光标,图形对象就会围绕旋转中心随光标的移动而旋转。动态缩放操作与旋转操作大致相同,不同的是该操作需要确定缩放中心位置,移动光
25、标,图形对象将以这个缩放中心为基准进行缩小或放大。2022年8月9日4时07分33 形变技术通常采用操作柄技术。操作柄在图形对象被拾取后显示出来,通常用小方块表示。如图6.4所示。(a)(b)图6.4 操作柄技术的形变 2022年8月9日4时07分34 在多边形各顶点上有一个操作柄,当拖动某个操作柄到新的定位点时,相邻两条边变成橡皮筋,以相邻两个端点为固定点随光标的移动而被拉伸。如图6.4所示,(a)为选中图形对象后显示的操作柄,(b)图为拖动一个操作柄后的橡皮筋显示所产生的形变。2022年8月9日4时07分353.2.4 拾取图形 拾取图形是交互式用户接口重要的任务之一。在交互式图形系统的增
26、、删、改操作中,都是以拾取图形、或以拾取图形的某一位置为基础的。从屏幕上拾取一个图形,其直观现象是该图形变颜色、或闪烁、或增亮,其实际意义是要在存储用户图形的数据结构中找到存放该图形的几何参数及其属性的地址,以便对该图形作进一步的操作,如修改其几何参数、连接关系或某些属性。2022年8月9日4时07分36n1点拾取点拾取 对于屏幕上的一点P1(x1,y1),该点的显示领域是以该点为圆心,r为半径的一个圆形区域,r是交互系统设定的领域精度。如果定位器定位点P0(x0,y0),且 (x1-x0)2+(y1-y0)2r2 说明定位点P0在P1点的显示领域内,即可拾取P1点。n2字符集的拾取字符集的拾
27、取 依次判断符号集中的每个符号参考点的显示领域是否包含了拾取点,如该图素的某个符号参考点满足点拾取条件,则对该图素拾取成功。2022年8月9日4时07分37n3直线段的拾取直线段的拾取P1P2直线段的拾取领域直线段的拾取领域 设直线段的端点为P1(x1,y1)和P2(x2,y2),该线段的显示领域为一个矩形区域,如图3.2.9所示。P1P2的直线方程为:(y1-y2)x-(x1-x2)y-x1(y1-y2)+y1(x1-x2)=0 直线的斜率为 当定位器定位点P0落在该矩形内,则表示 直线段拾取成功。21(120)12xxKyyyy2022年8月9日4时07分38n4折线集的拾取折线集的拾取
28、依次判断每条直线段的显示领域是否包含拾取点,如该图素的某一条线段满足拾取条件,则对该图素拾取成功。n5曲线的拾取曲线的拾取 曲线在显示时输出时,已离散成折线集,故曲线拾取算法与折线集拾取算法类似。n6字符串的拾取字符串的拾取 需要依次判断每个字符的显示领域是否包含了拾取点。2022年8月9日4时07分393.3 输入控制输入控制 图形软件包一般向用户提供三种基本的输入控制方式:请求方式、采样方式和事件驱动方式。可以用如下的命令设置一个输入设备的输入控制方式:set_locator_mode(ws,device_code,input_mode)其中,ws是工作站的标识号,device_code是
29、用来指定被采用的物理定位设备的设备码,input_mode对应请求、取样和事件三种输入控制方式之一。2022年8月9日4时07分403.3.1 请求输入方式请求输入方式 请求输入方式按照以下步骤工作:(1)应用程序向输入设备发出输入请求命令。例如,希望从定位器中获得一个定位坐标时,可用如下请求命令:request_locator(ws,device_code,x,y)该命令是把定位器设置成请求输入控制方式,其中x、y用来存储一个点的坐标值。(2)等待用户输入数据;(3)用户开始输入操作,如移动鼠标到定位点,再按确认键;(4)在用户输入操作完成后,应用程序得到输入数据,即定位点的坐标(x,y)。
30、请求输入方式一次只能对一个输入设备进行操作,而且只支持那些由RS-232端口联到计算机上的老式图形终端或其它交互设备。2022年8月9日4时07分413.3.2 取样输入方式取样输入方式 一个输入设备一旦设置成取样输入方式,立即就可以进行数据输入,而不必等待程序中的输入语句。例如,操纵杆设置成灾取样方式下的定位设备,则操纵杆的当前位置坐标立即就被存储起来,如果操纵杆的位置发生变化,就立即用当前的坐标来代替以前的位置坐标值。设置定位设备为取样方式的命令是:sample_locator(ws,device_code,x,y)取样方式允许用户同时使用多个设备。设备设置成取样方式后,应用程序按一定的周
31、期反复测试输入设备,随时读取数据,所以应用程序可以对用户的动作给出及时地反馈。这是取样方式的好处。2022年8月9日4时07分423.3.3 事件输入方式事件输入方式 在事件输入方式中,输入设备与应用程序是异步的。应用程序先将输入设备置成事件方式,并允许由设备输入。一旦设备是可输入的,不管应用程序是否准备好接收数据,用户都可以在这个输入设备上进行输入操作了。任何一个输入操作的数据都将作为事件按其发生的次序被送到一个输入队列中。应用程序随时可以检查这个输入队列,处理队列中的事件,或删除队列中的事件。有数据就处理,无有数据就处理,无数据就等待,即应用程序和输入设备各自独立地进数据就等待,即应用程序
32、和输入设备各自独立地进行,输入设备可以随时输入数据,并保存在输入队行,输入设备可以随时输入数据,并保存在输入队列中,而应用程序不断地检查输入队列,一旦有输列中,而应用程序不断地检查输入队列,一旦有输入数据就进行相应的处理。入数据就进行相应的处理。事件输入方式避免了请求方式和取样方式中存在输入数据丢失的问题。2022年8月9日4时07分43 在输入队列中的数据可按照逻辑设备类型、工作站号、物理设备编码进行检索。在应用程序中,检索事件输入队列可用下述命令:await_event(time,device_class,ws,device_code)其中,time是应用程序设置的最长等待时间。当事件队列
33、为空时,事件处理进程就挂起,直到最长等待时间已过或又有一个事件进入,才恢复事件的处理。若在输入数据之前,等待时间就已过去,则参数device_class就返回一个空值。当time被赋成零或当队列为空,程序就立即返回到其它的处理进程。当用await_event命令使某个设备进入事件输入控制方式,而且事件队列为非空时,在队列的第一个事件就被传送到当前事件记录中,对于定位器、笔划设备,在device_class参数中存放了它们的类型。为了从当前事件记录中检索一个输入的数据,还需要采用一个事件输入方式命令,其格式类似于请求、取样方式的命令,但在命令中不需要有工作站和设备码参数,因为在数据记录中已有这些
34、参数。用户可用下述命令从当前事件中得到一个定位数据:get_locator(x,y)2022年8月9日4时07分44 下面是一段程序用await_event、get_locator命令从1 号工作站的图形输入板上输入一个点集,并用直线段连接这些点。Set_stroke_mode(1,2,event);If(device_class=stroke)Await_event(60,device_class,ws,device_code);get_stroke(n,xa,ya);polyline(n,xa,ya);这里的IF条件循环是为了把从其它设备来的在队列中的数据滤掉。设置等待时间为1分钟,以保证
35、输入数据接收完毕。如果在事件方式下只有这台图形输入板处于激活状态,那么这个IF条件循环就不必要了。2022年8月9日4时07分45 在事件方式下,同时可应用多台输入设备以便加快交互处理。下面的程序是从键盘输入属性和图形输入板输入数据画折线。set_polyline_index(1);set_stroke_mode(1,2,event);/*把图形输入板设置成笔划设备*/set_choice_mode(1,7,event);/*把键盘设置成选择设备*/do await_event(60,device_class,ws,device_code);2022年8月9日4时07分46if(device_
36、class=choice)then get_choice(option);set_polyline_index(option);elseif(device_class=stroke)then get_stroke(n,xa,ya);polyline(n,xa,ya);while(device_class)在此例程序中,通过将device_class设置成空来终止此过程。若等待1分钟,还没有新事件进入事件队列,即会发生终止的情况。2022年8月9日4时07分473.4 用户接口的设计用户接口的设计 交互式图形系统重要的是为操作者提供方便的用户接口。用户接口的设计目标包括:(1)提高学习速度,即操
37、作者熟练掌握图形交互系统的使用方法所花费的时间。(2)提高使用速度,即提供高效的交互式技术,如橡皮筋技术、菜单技术、快捷键技术等。(3)降低操作失误率。操作失误率是指每次交互操作的平均失误率。(4)增强记忆,可以采用对话框、信息反馈等技术提示命令的参数和形式。(5)增强对潜在用户的吸引力,这是抢占市场方面的一个目标。构造一个交互式系统涉及到用户接口的表现形式、工作方式、用户命令集的描述、人-机对话序列的设计、用户接口的描述、交互式过程的驱动方式等内容。本节对这些内容进行讨论。2022年8月9日4时07分483.4.1 用户接口的表现形式用户接口的表现形式 用户接口的表现形式包括屏幕的布局、显示
38、内容、符号选用、网格划分、颜色选择等多方面的内容,每个方面都有一些经验和准则可以参考,按照一定的准则去设计表现形式,可以比较容易地建立和维护数据的表示与显示的一致性。1屏幕的划分屏幕的划分 显示屏幕又不同的大小、格式和分辨率,要合理、充分地利用屏幕,必须对屏幕作适当的划分,一般包括菜单栏、工具栏、绘图区、属性区、命令提示区等。绘图区尽可能大,其它内容要使用方便合理。屏幕的划分有对称型和不对称型两种。交互式图形系统常采用不对称布局方式。图6.6是Autocad的用户界面。2022年8月9日4时07分49 图6.6 autocad的用户界面 2022年8月9日4时07分50 2字型的选用字型的选用
39、 字型选用得好可以给界面带来生气。无论是英文还是中文都可以利用不同的字体,建立起一种层次关系,标题、子标题常用黑体字,已达到清晰、简单、醒目,而文本要易于阅读,大面积地使用黑体字会降低可读性。同时,还要考虑字符的大小、排列、对齐方式等。3颜色和灰度的选择颜色和灰度的选择 用不同的颜色和灰度表识信息、分离不同的形体、减少错误是非常有效的。实践表明对颜色和灰度的选择应考虑以下几个因素:(1)避免同时使用光谱边缘上的颜色;(2)字符、细线、小物体应避免用蓝色;(3)避免仅用蓝色的饱和度来区分颜色;(4)老年用户需要用较强的亮度才能识别颜色;(5)颜色效果与周围环境的色彩有关;(6)避免红、绿色同时使
40、用。2022年8月9日4时07分51 4系统的开启系统的开启 系统的开始的启动信息使用户使用系统的第一印象。对不同的用户应有不同的开启信息,生疏的用户要求步骤详细、提示信息丰富。熟练用户则要求命令、提示信息简洁、出入系统迅速。5窗口系统窗口系统 目前,个人计算机和工作站都提供了窗口系统,大多数的应用程序也都是以窗口系统为基础。窗口通常为矩形窗口,设计应用程序时要考虑窗口的大小、边界、多窗口的排列、窗口的刷新等问题。窗口及其管理系统已逐渐成为一个专门的课题,它是将常用的交互技术融为一体的综合应用环境,包括菜单、对话框、工具栏、图标等交互式对象。2022年8月9日4时07分52 6菜单菜单 菜单是
41、一组功能、对象、数据或其它用户可选择实体的列表。按照菜单的出现与消失方式可以分为以下几种形式:(1)固定式:固定式一般适用于静态菜单,它自始自终显示在屏幕的某一固定区域,一般位于屏幕的上部,用作系统的主菜单;(2)翻页式:菜单项按层次分页,进入一层菜单就像翻过一页书;(3)拉帘式:用户可象拉帘子一样拉出一个个菜单;(4)增长式:这种菜单的显示好像是慢慢长出来似的;(5)弹出式:一般是按下鼠标右键,在屏幕上弹出一个菜单。弹出式菜单一般可以放在屏幕的不同位置,因此也称为浮动菜单。7图符和光标图符和光标 在用户界面上使用不同的图符和光标,是用户接口更为形象,操作更为方便。例如,用铅笔图符表示临时性的
42、写和画,钢笔光标表示永久性的操作,文件夹表示文档的管理,手指图符表示定位和方向等。图符和光标常用作工具栏、快捷键的图标(icon)。2022年8月9日4时07分533.4.2 用户接口的设计原则用户接口的设计原则 在设计用户接口时,应遵循以下设计原则:1保持一致性保持一致性 保持交互系统的一致性是指在设计系统的各个环节时,应遵从统一的、简单的规则,保证不出现里外和特殊情况。保持一致性的目的是能让用户有系统某个方面的知识推广到其它方面,以便于用户快速学习和熟练掌握。用户接口输入部分的一致性包括:键盘功能键,全程命令和常用命令,它们的功能在整个系统内应当一致。输出部分的一致性包括:使用的图符和颜色
43、、状态信息的位置、菜单位置等。2提供反馈提供反馈 反馈是人-机交互的一部分,设计用户接口时必须考虑到各种反馈,并在程序中实现。根据设计过程中的功能设计、顺序设计(语法)和联结设计(词法)的三个步骤,可以给出三级反馈。设计人员必须有意识地考虑到每一级,并明确地决定是否提供反馈,以何种形式给出反馈。2022年8月9日4时07分54 (1)最低级的反馈。对应于联结设计,用户在交互设备上的每个动作都应立即产生明显的反馈。如在键盘上键入字符时应在屏幕上回显,鼠标器的移动应对应于光标的运动。(2)二级反馈。对应于顺序设计,当系统接受输入语言(命令、位置、操作对象等)中的每个词组时,应提供反馈,被拾取的物体
44、或被选中的菜单项要着重显示,使用户知道他的动作已被接受。(3)功能级反馈。对应于功能设计,这是最有用且最受用户欢迎的一种反馈方式。它告诉用户所发出的命令已经执行完毕。通常是将操作结果显示出来。在执行某个费时的操作时的操作时,要给出某种反馈,例如进度条、百分数等,表明计算机仍在执行中,并且使用户知道大约何时能够执行完这个命令。2022年8月9日4时07分55 3尽量减少失误尽量减少失误 要尽可能地减少用户的操作失误,为此,要注意两点:一是使系统只提供当前有效的菜单命令,引导用户只在有效的范围内工作,不让用户做不能做或不允许做的事;二是尽量避免副作用,不要产生用户不期望的结果。设计时考虑不全、与用
45、户交流不充分往往会产生副作用。2022年8月9日4时07分56 4提供出错恢复机制提供出错恢复机制 有四种出错时的恢复方法,即复原(Undo)、中止(Abort)、取消(Cancel)和校正(Correct)。当用户错误地执行一个或多个命令,得到一个预料之外的结果时,就需要使用“复原”命令恢复到执行的状态。复原又分为单级复原和多级复原两种。单级复原只恢复到上一个命令执行前的状态。如果单级复原命令之后紧接着再执行一次“复原”命令的话,就等于没有做恢复工作。多级复原是在前面之行过的命令栈上进行操作。执行过的命令都存入栈中,根据栈里存放的命令逐一作恢复工作。对应于多级复原,还配备一个“重做(Redo
46、)”操作,把复原以后的状态通过“重做”再恢复过来。2022年8月9日4时07分57 中止(Abort)操作是在命令执行过程中,用户意识到出现了失误,这是就需要“中止”命令来停止命令的继续执行。“中止”命令也需要把系统恢复到命令执行前的状态,相当于被中止的操作没有执行。取消(Cancel)是在用户为执行某个命令而输入所需要的参数时,会突然发现自己并不想执行这个命令,这是就需要“取消”这个命令,回到输入前的状态。校正(Correct)是在用户输入参数时,往往会发现出现失误,这时用户总是希望能简单地把错误校正过来。例如,在文本输入时出现错误,可以使用Backspace键来删除错误,并重新输入。202
47、2年8月9日4时07分58 5面向多层次用户面向多层次用户 交互式图形系统要面向各种层次的用户,使毫无经验的新手、经验不多的用户,直到熟练用户,都能找到适合自己的交互手段。使系统能容纳多层次用户的方法包括:提供加速键,增加提示信息、提供帮助信息和可扩展功能,以及隐藏复杂功能等。6尽量减少记忆的内容尽量减少记忆的内容 要尽量减少让用户记忆的内容。例如,在绘图系统中,用数字代号表示形体,而不要用名字。拾取形体或图形使用交互式手段,而不需要记忆形体的信息。2022年8月9日4时07分593.5 交互式技术工具箱交互式技术工具箱 用户接口的外观和给人的感觉很大程度上取决于它们所使用的各种交互技术。设计
48、和实现一组好的交互技术不是一件容易的事情,在4.1节介绍了三种用户接口的常用形式,即子程序库、专用语言和交互命令。在这一节主要介绍三种交互技术实现工具箱,即用户接口子程序库、资源描述语言和资源编辑器。用交互技术工具箱,可以实现统一的外观、统一的交互风格,可以节省编程时间。2022年8月9日4时07分60 1用户接口子程序库用户接口子程序库 用户接口子程序库是为应用程序设计者提供的,专门用来设计各种交互技术的子程序集。每个窗口系统都提供了用户接口子程序库,常用的用户接口子程序工具箱有:Andraw窗口管理系统工具箱,Macintosh工具箱,Ms-Windows工具箱,X窗口系统的OSF/Mot
49、if和InterView工具箱,在X和News两个窗口系统上实现的OpenLook工具箱和SunView窗口系统工具箱等。工具箱中的子程序不仅可以有应用程序调用,也可以在窗口管理系统中调用。在多个应用程序中使用同一个工具箱,就可以保证应用程序、窗口管理系统的外观和交互风格相一致。例如,对话框的2022年8月9日4时07分61 外观、布局、颜色,文字的输入域、列表框等,在各个应用程序之间都具有相同的风格。以下是利用SunView工具箱编写的一段程序,用于在一个窗口上建立一个命令按钮。frame=(Frame)xv_create(NULL,FRAME,/*指明生成一个对话框的框架*/WIN_SHO
50、W,TRUE,FRAME_LABEL,“Sample”,/*框架的标题*/XV_WIDTH,200,/*框架的宽度*/XV_HEIGHT,100,/*框架的高度*/NULL);panel=(Panel)xv_create(frame,PANEL,/*在frame框架上生成一个对话板panel*/NULL);2022年8月9日4时07分62(void)xv_create(panel,PANEL_BUTTON,/*在panel板上生成一个按钮*/PANEL_LABEL_STRING,“Quit”,/*按钮的名字串为Quit*/PANEL_NOTIFY_PROC,quit_proc,/*执行的程序过