第11章图形用户界面GUI56.ppt

上传人:本田雅阁 文档编号:2547081 上传时间:2019-04-06 格式:PPT 页数:56 大小:620.01KB
返回 下载 相关 举报
第11章图形用户界面GUI56.ppt_第1页
第1页 / 共56页
第11章图形用户界面GUI56.ppt_第2页
第2页 / 共56页
第11章图形用户界面GUI56.ppt_第3页
第3页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第11章图形用户界面GUI56.ppt》由会员分享,可在线阅读,更多相关《第11章图形用户界面GUI56.ppt(56页珍藏版)》请在三一文库上搜索。

1、第11章 图形用户界面(GUI),用户界面即用户与硬件、软件交互、通信的中介,通过用户界面,用户向软件发出执行某项功能的指令,该软件利用硬件、其他软件执行该指令,并以图形或文字的形式将执行结果返回给用户。现今,对大多数用户来说人们更青睐于一种所见即所得的用户界面系统,即图形用户界面(Graphical User Interface,简称GUI)。图形用户界面是由窗口、光标、按键、菜单、文字等元素构成的用户视窗,用户通过对这些元素的点击、选中等就能很轻松地完成某项功能,这种所见即所得的特性尤其在图形绘制等方面具有很好的应用。,11.1 GUI设计方式,图形用户界面程序可以分为两个相对较独立的子模

2、块,即界面模块和工作模块,界面模块接受用户的输入,并将输入数据和操作请求提交给工作模块;而工作模块通常在后台完成数据处理任务,并将结果提交到界面。相应地,GUI程序设计可以分为界面设计和程序设计两部分。 本节首先介绍GUI的界面元素及界面对象层次结构,这是GUI界面设计的基础。,11.1.1 GUI对象及层次结构,图形用户界面程序的界面部分由各种类型的图形对象组成,如窗口、菜单、按钮等。 MATLAB的图形对象是MATLAB用于显示数据的基本元素,每个图形对象都有一个唯一的ID,称之为句柄(handle),因此MATLAB图形对象也称为句柄图形对象。用户可以通过图形句柄查询或设置对象的属性,也

3、可以经由图形句柄改变图形对象的外观。,什么是句柄? 句柄是图形对象的标识代码(唯一的身份),标识代码含有图形对象的各种必要的属性信息。 各图形对象的句柄数据格式: 根屏幕 0 图形窗口 正整数,表示图形窗口序号 其它对象 对应的双精度浮点数,11.1.2 句柄(handle)与句柄操作,父对象 子对象,图形对象之间的关系为父代与子代的关系,说明: 根:图形对象的根,对应于计算机屏幕,根只有一个,其它所有图形对象都是根的后代。 图形窗口: 根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。 界面控制:图形窗口的子代,创建用户界面控制对象,使得用户可采用鼠标在

4、图形上作功能选择,并返回句柄。,11.1.2 句柄(handle)与句柄操作,界面菜单: 图形窗口的子代,创建用户界面菜单对象 轴:图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈 线:轴的子代,创建线对象 面:轴的子代,创建块对象 字:轴的子代,创建字对象 块:轴的子代,创建块对象 像:轴的子代,创建图像对象,11.1.2 句柄(handle)与句柄操作,窗口对象,线对象,轴对象,面对象,轴对象,块对象,线对象,文字对象,像对象,例:创建1号窗口,返回句柄 h=figure(1) h=1 返回值为窗口号数 例:h=line(1:6,1:6)创建线对象的同时也建立了一个唯一的句柄 变量

5、h是句柄值符点数,应用举例:,图形窗口正整数,表示图形窗口序号 其它对象对应的双精度浮点数,句柄属性的设置与修改 get: 获得句柄图形对象的属性和返回某些 对象的句柄值 set: 改变图形对象的属性 专用函数: gcf:当前图形对象的句柄 Get Current Figure gca:当前轴对象的句柄 Get Current Axes get(gca) 返回当前坐标轴的所有属性值,11.1.3 图形对象属性的获得与设置,操作格式: h=gcf 将当前窗口对象的句柄返回h get(h)或get(gcf) 查阅当前窗口对象的 属性 delete(gcf) 删除当前窗口的属性 例:h=line(1

6、:6,1:6) get(h) 获得句柄图形对象的属性和返回某些 对象的句柄值 2、get(gca,children)轴的子代,11.1.3 图形对象属性的获得与设置,例:创建一个线对象并返回线对象的句柄值 h1=line(0:10,0:10) h1 = 57.0001 h1为句柄的代码值,应用举例:,查阅线对象的属性名称和属性值 get(h1) Color = 1 1 0 EraseMode = normal LineStyle = - LineWidth = 0.5 MarkerSize = 6 Xdata = (1 by 11) Ydata = (1 by 11) Zdata = ,But

7、tonDownFcn = Children = Clipping = on Interruptible = no Parent = 56.0001 Type = line UserData = Visible = on 查轴的句柄 get(gca),对象属性的继承操作是通过父代对象,设置省缺对象属性来实现的。 父代句柄属性中设置缺省值后,所有子代对象均可以继承该属性的省缺值。 属性省缺值的描述结构为: Default+对象名称+对象属性,11.1.4 对象属性的继承操作,如:DefaultFigureColor 图形窗口的颜色 DefaultLineColor 线的颜色 省缺值的获得与设置也是

8、由get,set函数实现的,例: get(0,DefaultFigureColor) 获得图形 窗口颜色的缺省值,应用举例:,应用举例:,例:在图上添加文字注释,颜色为红色,应用举例:,set(gcf,DefaultTextColor,1 0 0) gtext(正弦) gtext(余弦) %鼠标取点 在轴对象上设置字对象的颜色省缺值为红色 继承该省缺值在图上添加红色的文字注释,例:在轴对象上设置线sin(2x)0:2的颜色省缺值为红色,x=0:2*pi/180:2*pi; y=sin(2*x); set(gca,DefaultLineColor,1 0 0); h=line(x,y) h =

9、68.0001 set(h,color,default) 变成缺省的红色,11.3 GUIDE式GUI程序,我们希望像在VC、VB中那样,只需通过鼠标把需要的对象拖曳到目的位置,并设置相关的属性就能得到一个设计良好的GUI界面,这正是下面将要介绍的GUIDE。为此,下面通过一个简单的例子介绍GUIDE式的GUI程序设计方法,其主要目的是了解其设计的主体思路,更详细的内容将在本章后续内容中讨论。,11.3.1 GUIDE式GUI程序,(1)启动GUI 欲启动GUI操作,可以在命令窗口中输入guide命令。,(2)布局(Layout)编辑器,当用户在GUIDE 中打开一个GUI时,该GUI将显示在

10、 Layout编辑器中,Layout编辑器是所有GUIDE工具的控制面板。,(2)布局(Layout)编辑器,可以使用鼠标拖动模板左边的控件(按钮、坐标轴、单选按钮等)到中间的布局区域 。,(3)GUIDE模板介绍,GUIDE Quick Start对话框提供了几种常用的GUI模板 。,(4)运行GUI,单击工具栏最右边的绿色按钮,即运行当前的GUI窗口。,11.3.2 创建GUI对象,GUI窗口的布局 改变GUI窗口的大小 控件的添加和对齐 GUI控件的属性控制 属性查看器的显示 一些常用的属性 菜单的添加 主菜单的创建 弹出式菜单的的创建,11.3.2 GUI窗口的布局,改变GUI窗口的大

11、小 在布局编辑器中可以很方便地改变GUI中网格区域的大小,只需单击网格区域的右下角,当鼠标变为箭头形式时,拖动鼠标,即可适时改变窗口的大小,11.3.2 GUI控件的属性控制,属性查看器的显示 可以使用如下方式打开: 在布局窗口中双击某个控件。,11.3.2 主菜单的创建1,菜单属性的设置 单击右图中的菜单标题Untitled 1,将在菜单编辑器的右边显示该菜单的属性提供给用户进行编辑,如Label、Tag、Accelerator、Separator和Checked等属性。,11.4 GUIDE界面环境,GUIDE创建的GUI程序由两个文件组成: FIG文件,即用户界面文件; M文件,保存了G

12、UI程序所有的代码,用户所有的编码工作都在该文件中完成。,11.4.1 GUI界面设计,界面设计在软件设计中具有重要的地位,有时界面的好坏甚至决定了软件的命运,对图形用户界面程序更是如此。 用户界面是人与计算机之间的媒介,用户通过用户界面来与计算机进行信息交换,所以软件的友好性、易用性对于软件系统至关重要。用户界面设计的最高原则应该是用户无须阅读操作手册就知道如何使用软件。,11.4.2 窗口和轴,窗口是GUI各类界面对象的容器,是任何GUI程序界面不可缺少的元素。从对象继承关系看,各类界面对象、轴、菜单都是窗口对象的子类,是一些特殊类型的窗口,表列出了窗口对象常用的属性。,窗口常用属性,11

13、.4.3 菜单,对于某些GUI程序,菜单栏是必需的。关于菜单栏的设计,GUIDE已经为用户提供了一个标准菜单,用户可以在该标准菜单的基础上通过新增和修改菜单项定义自己菜单。表列出了菜单经常使用的属性。,菜单常用属性,回调函数,GUI程序完成初始化之后,其工作流程大致如下:用户通过操作某个界面对象,向GUI程序发出任务请求;MATLAB自动调用该界面对象的回调函数,响应用户请求并以某种形式返回执行结果。 这里有必要澄清一个问题,即回调函数是用户操作触发,但由MATLAB系统调用;用户不需要也不应当直接调用回调函数,用户只需关注回调函数本身。用户也许会对MATLAB系统如何启动回调函数心存疑问,实

14、际上回调函数是界面对象的一个属性,MATLAB系统通过界面对象的句柄查询到回调函数的句柄,从而实现对回调函数的调用。,11.4.4 控件,对控件对象,有几类属性是共有的,且含义、用法是相似的: Style,所有的控件都由函数uicontrol创建,因此在创建控件时需要传入控件类型参数,如pushbutton、Checkbox、EditText等; Tag,关于标签属性的含义及其用法。 Callback,即控件的回调函数。 String,该属性包含了对象的一些文字描述,对按钮、复选框、列表框、编辑框和静态文本框,String是显示在对象上或紧邻对象的文字。,Value包含了对象的数值描述,该数值

15、必须在Min和Max之间,其中Min和Max分别由Min、Max属性决定。对复选框,Max、Min为1和0。当复选框被选中时,Value为1,否则为0。对滚动条,Value是随滚动条位置变化的数值。,11.4.4 控件,11.5 GUI程序设计,GUIDE创建的GUI程序文件由两部分组成,其一是界面文件,保存了GUI程序的界面对象及其布局;其二是GUI M文件,保存了GUI程序所有的代码,相当于GUI程序的引擎,用户所有的编码工作都在该文件中完成,其中主要是各类回调函数的设计。,11.5.1 GUI M文件结构,GUI M文件包含了所有运行GUI程序所需的代码,完成GUI界面设计之后,GUID

16、E会自动产生相应的M文件框架。虽然回调函数是用户主要的编程工作,但GUI M文件的结构对理解MATLAB GUI程序的本质及进一步的程序设计是非常重要的。 MyGuideGUI.m函数文件除一个主函数之外,还包含6个子函数,可以将这些函数(包括主函数)分为以下四类:,GUI创建函数,即主函数(MyGuideGUI),用于创建GUI界面、GUI程序实例等,用户可以在该函数内完成一些必需的初始化工作,如设置程序运行相关的环境变量等。GUI创建函数可以返回程序窗口的句柄; 初始化函数(MyGuideGUI_OpeningFcn),完成程序的初始化工作,如GUI界面的初始化等; 输出函数(MyGuid

17、eGUI_OutputFcn),将程序执行后的状态输出至命令行,或向其他GUI程序传递参数; 回调函数(pushbuttonk_Callback),用于响应用户操作。,11.5.2 设计回调函数,回调函数的一般格式如下: function tag_Callback(hObject, eventdata, handles) 其中hObject即是界面对象的句柄, eventdata为消息句柄,handles为回调函数的输入参数。,11.6 GUI应用实例,前面从GUI界面设计、程序设计两个方面分别对MATLAB GUI设计进行了详细的介绍,内容相对分散,通过一个完整GUI设计实例将前面内容组织起

18、来,通过这个例子,一方面,可以学习GUI设计的流程,另一方面也可以加深对前面内容的理解。,11.6.1 分析用户需求,设计一个GUI程序,该程序具备以下功能:用户随机输入两个频率值和,以及一个时间向量,GUI计算时间序列,并对该时间序列作傅立叶分析;分别作该时间序列的时域波形图和频域波形图。 对一些大型复杂程序,设计者往往需要对用户的需求进行分析、转换、拆分,从而得到一组由软件语言描述、相对独立的子任务。本例中的用户需求较简单,可以直接跳至GUI界面设计阶段。,11.6.2 设计GUI界面,(1)启动GUIDE; (2)选择GUI模板,在GUIDE启动(GUIDE Quick Start)对话

19、框中选择空白GUI模板(Blanket GUI) (3) 窗口属性设置,在工具栏点击按钮 打开窗口属性浏览器,设置窗口的相关属性。 Name:MyAdvanceGUI; MenuBar:None; ToolBar:None; UIContextMenu: None;Unit:normalized;Tag:MyGUI,(4)添加轴对象,并设置相关属性。鼠标单击编辑界面左侧控件面板的,然后在界面客户区绘制坐标轴,通过复制的方法绘制第二个坐标轴。 (5)轴对象属性设置。将两坐标轴的Tag分别设置为“Time”和“Frequency”,其他属性保持不变。 (6)为做标轴添加标题x=sin(2 f1t)

20、+sin(2 f2t)。鼠标单击编辑界面左侧控件面板的静态文本框(Static Text),设置静态文本框的String为sin(2pif1t)+sin(2pif2t),String,该属性包含了对象的一些文字描述,String是显示在对象上或紧邻对象的文字。,(7)添加频率输入编辑框。单击界面左侧控件面板的编辑框按钮(Edit Text)至客户界面适当的位置,设置编辑框的String属性值为50,Tag属性为f1_ed,用同样方法创建第二个编辑框, String属性值为50,Tag属性为f2_ed,并通过(6)的方法编写文本提示标题分别为“频率值f1”和“频率值f2” (8)添加时间向量输入

21、编辑框。利用与(6)相思方法创建时间向量编辑框, String属性值为”时间向量t”,时间向量输入编辑框的String设置为0:0.001:0.25,Tag属性为t_ed,(9)添加波形分析按钮(Push Button)。单击编辑界面左侧控件面板并拖至客户界面合适位置,String设置为”波形分析”,Tag属性为WaveAnalys_Bn. (10)保存GUI界面文件并运行,得到结果如下图所示,11.6.3 设计GUI程序,本例GUI程序的大致执行流程如下:用户输入频率值f1、f2和时间向量t,单击波形分析按钮后,按钮的回调函数启动,显示时序波形和频率波形。因此,本例程序设计的任务即是波形分析

22、按钮回调函数的编码。右键单击波形分析按钮,并在弹出的上下文菜单中选择菜单路径【View CallbacksButtonDownFcn】进入按钮的回调函数,,%获取用户输入数据 f1=str2double(get(handles.f1_input,String); f2=str2double(get(handles.f2_input,String); t=eval(get(handles.t_input,String); x=sin(2*pi*f1*t)+sin(2*pi*f2*t); y=fft(x,512); m=y.*conj(y)/512; f=1000*(0:256)/512; %FF

23、T计算 axes(handles.frequency_axes) plot(f,m(1:257) set(handles.frequency_axes,XMinorTick,on) grid on %绘制时域波形 axes(handles.time_axes) plot(t,x) set(handles.time_axes,XMinorTick,on) grid on %频域波形,11.6.4 GUI程序发布,GUIDE创建的GUI程序由Fig文件和M文件组成,用户可以将GUI程序打包为单个的M文件,不需要Fig文件的支持。在GUI界面编辑窗口中选择菜单路径【FileExport】,如图所示,选择合适的路径和文件名并保存。,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1