《10分钟搞定matlabGUI.ppt》由会员分享,可在线阅读,更多相关《10分钟搞定matlabGUI.ppt(94页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、参考文献:MATLAB程序设计教程 李海涛,邓樱 编著高等教育出版社,2002 图形用户界面图形用户界面(GUI)是指由窗口、菜单、图标、光标、按键、对话框和文本等各种图形对象图形对象组成的用户界面。它让用户定制用户与Matlab的交互方式,而命令窗口不是唯一与Matlab的交互方式。用户界面用户界面是用户与计算机进行信息交流的方式。计算机在屏幕显示图形和文本,若有扬声器还可产生声音。用户通过输入设备(如:键盘、鼠标、跟踪球、绘制板或麦克风),与计算机通讯。用户界面设定了如何观看和如何感知计算机、操作系统或应用程序。通常,多是根据悦目的结构和用户界面功能的有效性来选择计算机或程序。用户通过鼠标
2、或键盘选择、激活这些图形对象,使计算机产生某种动作或变化。Matlab中设计图形用户界面的方法有两种方法有两种:使用可视化使用可视化的界面环境的界面环境和通过编写程序通过编写程序。由上一讲可知:用户菜单、用户控件和对话框是和坐标轴处于同一层次的,都是图形窗口的子对象。基本图形对象分为控件对象控件对象和用户界面菜单对象用户界面菜单对象,简称控件控件和菜单菜单。图形用户界面设计工具的启动图形用户界面设计工具的启动图形用户界面设计工具的启动方式:1.命令方式命令方式图形用户界面GUI设计工具的启动命令为guide,格式为:guide功能:功能:启动GUI设计工具,并建立名字为untitled.fig
3、的图形用户界面。功能:功能:启动GUI设计工具,并打开已建立的图形用户界面。guide 2.菜单方式菜单方式 在Matlab的主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示GUI的设计模板。Matlab为为GUI设计一共准备了设计一共准备了4种模板,分别是种模板,分别是:uBlank GUI(Default)(空白模板,默认);uGUI with Uicontrols(带控件对象的GUI模板);uGUI with Axes and Menu(带坐标轴与菜单的GUI模板);uModal Question Dialog(带模式问题对话框的GUI模板)。当用户选择不同的
4、模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。图形用户界面设计工具启动时模板选择对话框图形用户界面设计工具启动时模板选择对话框 图形用户界面设计窗口图形用户界面设计窗口 图形用户界面GUI设计窗口由菜单栏、菜单栏、工具栏、控件工具栏、控件工具栏工具栏以及图图形对象设计区形对象设计区等4个功能区个功能区组成。在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口。选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。左图为空白GUI模板情形 GUI设计窗口的菜单栏菜单栏有、View、Layout、Tools和Help 6个菜个菜单项单项,使
5、用其中的命令可以完成图形用户界面的设计操作。编辑工具编辑工具在菜单栏的下方,提供了常用的工具;设计设计工具区工具区位于窗口的左半部分,提供了设计GUI过程中所用的用户控件;空间模板区空间模板区是网格形式的用户设计GUI的空白区域。在GUI设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。Matlab提供了一套可视化的创建图形窗口的工具,使用图形用户界面开发环境可方便地创建GUI应用程序,它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。一、图形用户界面开发环境一、图形用户界面开发环境(GUIDE)Matlab提供了一套可视化的创建图形用
6、户接口(GUI)的工具,包括:u对象浏览器对象浏览器(Object Browser)用于获得当前Matlab图形用户界面程序中的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器;u布局编辑器布局编辑器(Layout Edtor)在图形窗口中创建及布置图形对象。布局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编辑器中访问,用用guide命令可以启动,命令可以启动,或在启动平台窗口中选择或在启动平台窗口中选择GUIDE来启动布局编辑器;来启动布局编辑器;u几何排列工具几何排列工具(Alignment Tool)调整各对象相互之间的几何关系和
7、位置;u属性查看器属性查看器(Property Inspector)查询并设置属性值;u菜单编辑器菜单编辑器(Menu Editor)创建、设计、修改下拉式菜单和快捷菜单;uTab顺序编辑器顺序编辑器(Tab Order Editor)用于设置当用户按下键盘上的Tab键时,对象被选中的先后顺序。在Matlab 5中,GUI的设计是以 M文件的编程形式实现的,GUI的布局代码存储在M文件和MAT文件中,而在Matlab 6中有了很大的改变,Matlab 6将GUI的布局代码存储在 FIG文件中,同时还产生一个M文件用于存储调用函数,在M文件中不再包含GUI的布局代码,在开发应用程序时代码量大大减
8、少。用于从控件选择板上选择控件对象并放置到布局区去,布局区被激活后就成为图形窗口。在命令窗口输入GUIDE命令或点击工具栏中的guide图标都可以打开空白的布局编打开空白的布局编辑器辑器,在命令窗口输入GUIDE 可打开一个已存在的打开一个已存在的名为图形用户界面。1.布局编辑器布局编辑器(Layout editor)将控件对象放置到布局区将控件对象放置到布局区u 用鼠标选择并放置控件到布局区内;u 移动控件到适当的位置;u 改变控件的大小;u 选中多个对象的方法。一一个个简简单单的的布布局局示示例例 如所建立的布局还没有进行存储,可用File菜单下的Save As菜单项(或工具栏中的对应项工
9、具栏中的对应项),按输入的文件的名字,在激活图形窗口的同时将存储一对同名的M文件和带有.fig扩展名的FIG文件。激活图形窗口激活图形窗口 运行运行GUI程序程序 在命令窗口直接键入文件名或用openfig,open或hgload命令运行GUI程序。布局编辑器参数设置布局编辑器参数设置选File菜单下的Preferences菜单项打开参数设置窗口,点击树状目录中的GUIDE,即可以设置布局编辑器的参数。布局编辑器的弹出菜单布局编辑器的弹出菜单 在任一控件上按下鼠标右键,会弹出一个菜单,通过该菜单可以完成布局编辑器的大部分操作。2.位置调整工具位置调整工具(Alignment tool)在选中多
10、个对象后,可以方便的通过对象位置调整器调整对象间的对齐方式和距离。对象位置调整器中的第一栏是垂直方向的位置调整,第二栏是水平方向的位置调整。利用位置调整工具,可以对GUI对象设计区内的多个对象的位置进行调整。位置调整工具的打开方式有两种:位置调整工具的打开方式有两种:从GUI设计窗口的工具栏上选择Align Objects命令按钮;选择Tools菜单下的Align Objects.菜单项,就可以打开对象位置调整器。利用对象属性查看器,可以查看每个对象的属性值,也可以修改、设置对象的属性值。3.用属性查看器设置控件属性用属性查看器设置控件属性 打开属性查看器打开属性查看器(Opening Pro
11、perty Inspector)对象属性查看器的打开方式有四种:对象属性查看器的打开方式有四种:u从GUI设计窗口工具栏上选择Property Inspector命令按钮;u选择View菜单下的Property Inspector菜单项;u在控件对象上单击鼠标右键,选择弹出菜单的 Property Inspector菜单项。u在命令窗口中输入inspect;u 布置控件;u 定义文本框的属性;u 定义坐标轴的属性;u 定义按钮的属性;u 定义复选框。使用属性查看器使用属性查看器(Using Property Inspector)利用菜单编辑器,可以创建、设置、修改下拉式菜单和快捷菜单。选择 T
12、ools 菜单下的 Menu Editor.子菜单,即可打开菜单编辑器。4.菜单编辑器菜单编辑器(Menu Editor)菜单也可以通过编程实现,方法为从GUI设计窗口的工具栏上选择Menu Editor命令按钮,打开菜单编辑程序。菜单编辑器包括菜单的设计和编辑,菜单编辑器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置菜单项的属性,包括名称(Label)、标识(Tag)、选择是否显示分隔线(Separator above this item)、是否在菜单前加上选中标记(Item is checked)、调用函数(Callback)。菜单编辑器左上角的第一个按钮用于创建一级菜单项。第二个
13、按钮用于创建一级菜单的子菜单。菜单编辑器的左下角有两个按钮,选择第一个按钮,可以创建下拉式菜单。选择第二个按钮,可以创建Context Menu菜单。选择它后,菜单编辑器左上角的第三个按钮就会变成可用,单击它就可以创建Context Menu主菜单。在选中已经创建的Context Menu主菜单后,可以单击第二个按钮创建选中的Context Menu主菜单的子菜单。与下拉式菜单一样,选中创建的某个Context Menu菜单,菜单编辑器的右边就会显示该菜单的有关属性,可以在这里设置、修改菜单的属性。菜单编辑器左上角的第四个与第五个按钮用于对选中的菜单进行左移与右移,第六与第七个按钮用于对选中的
14、菜单进行上移与下移,最右边的按钮用于删除选中的菜单。5.对象浏览器对象浏览器(Object Browsers)利用对象浏览器,可以查看当前设计阶段的各个句柄图形对象。可以在对象浏览器中选中一个或多个控件来打开该控件的属性编辑器。对象浏览器的打开方式有:从GUI设计窗口的工具栏上选择Object Browser命令按钮;选择View菜单下的Object Browser子菜单;在设计区域单击鼠标右键,选择弹出菜单的 Object Browser。.Tab顺序编辑器顺序编辑器(Tab Order Editor)利用Tab顺序编辑器(Tab Order Editor),可以设置用户按键盘上的Tab键时
15、,对象被选中的先后顺序。Tab顺序编辑器的打开方式为:顺序编辑器的打开方式为:选择Tools菜单下的Tab Order Editor.菜单项,就可以打开Tab顺序编辑器。从GUI设计窗口的工具栏上选择Tab Order Editor.命令按钮。1.GUI控件对象类型控件对象类型 控件对象是事件响应的图形界面对象。当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback).2.控件对象的描述控件对象的描述 Matlab中的控件大致可分为两种,一种为动作控件动作控件,鼠标点击这些控件时会产生相应的响应。一种为静态控件静态控件,是一种不产生响应的控件,如文本框等。二、控件对象
16、及属性二、控件对象及属性 每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,既属性。属性由两部分组成:属性名和属性值,它们必须是成对出现的。按钮按钮(Push Buttons):执行某种预定的功能或操作;开关按钮开关按钮(Toggle Button):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback 中的内容;单选框单选框(Radio Button):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;复
17、选框复选框(Check Boxes):单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;文本编辑器文本编辑器(Editable Texts):用来使用键盘输入字符串 的值,可以对编辑框中的内容进行编辑、删除和替换等操作;静态文本框静态文本框(Static Texts):仅用于显示单行的说明文字;滚动条滚动条(Slider):可输入指定范围的数量值;边框边框(Frames):在图形窗口圈出一块区域;列表框列表框(List Boxes):在其中定义一系列可供选择的字符串;弹出式菜单弹出式菜单(Popup Menus):让用户从一列菜
18、单项中选择一项作为参数输入;此外还有坐标轴(Axes),用于显示图形和图象。用户可以在创建控件对象时,设定其属性值,未指定时将使用系统缺省值。3.控件对象的属性控件对象的属性(Attributes of controller object)两大类控件对象属性:第一类是所有控件对象都具有的公共属性,第二类是控件对象作为图形对象所具有的属性。控件对象的公共属性控件对象的公共属性uChildren 取值为空矩阵,因为控件对象没有自己的子对象;uTag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;uType 取值为uicontrol,表明图形对象的类型;uVisib
19、le取值为on 或off。uUserDate取值为空矩阵,用于保存与该控件对象相关的重要数据和信息;uParent取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口;uBackgroundColor取值为颜色的预定义字符或RGB数值;缺省值为浅灰色;uCallback取值为字符串,可以是某个M文件名或一小段Matlab语句,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序;uEnable取值为on(缺省值),inactive和off;uExtend取值为四元素矢量0,0,width,height,记录控件对象标题字符的位置和尺寸;uForegroundColor取值为颜
20、色的预定义字符或RGB数值,该属性定义控件对象标题字符的颜色;缺省值为黑色;uMax,Min取值都为数值,缺省值分别为1和0;uString取值为字符串矩阵或块数组,定义控件对象标题标题或选项内容;uStyle取值可以是pushbutton(缺省值),radiobutton,checkbox,edit,text,slider,frame,popupmenu 或listbox;uUnits取值可以是pixels(缺省值),normalized(相对单位),inches,centimeters(厘米)或points(磅);uValue取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型。
21、控件对象的基本控制属性控件对象的基本控制属性uFontAngle取值为normal(正体,缺省值),italic(斜体),oblique(方头);uFontName取值为控件标题等字体的字库名;uFontSize取值为数值;uFontUnits取值为points(缺省值),normalized,inches,centimeters或pixels;uFontWeight取值为normal(缺省值),light,demi和bold,定义字符的粗细;uHorizontalAligment取值为left,center(缺省值)或 right,定义控件对象标题等的对齐方式。控件对象的修饰控制属性控件对象
22、的修饰控制属性uListboxTop取值为数量值,用于listbox控件对象;uSliderStep取值为两元素矢量minstep,maxstep,用于slider控件对象;uSelected取值为on 或off(缺省值);uSlectionHoghlight取值为on 或off(缺省值)。控件对象的辅助属性控件对象的辅助属性uBusyAction取值为cancel或queue(缺省值);uButtDownFun取值为字符串,一般为某个M文件名或一小段Matlab程序;uCreatfun 取值为字符串,一般为某个M文件名或一小段Matlab程序;uDeletFun取值为字符串,一般为某个M文件
23、名或一小段Matlab程序;uHandleVisibility取值为on(缺省值),callback或off;uInterruptible取值为on 或off(缺省值)。Callback管理属性管理属性4.控件对象的建立控件对象的建立 Matlab提供了用于建立控件对象的函数uicontrol,其调用格式为:对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,)其中各个属性名及可取的值和后面将介绍的uimenu函数相似,但也不尽相同。在对话框上有各种各样的控件,利用这些控件可以实现有关控制。例例1 建立数制转换对话框。在左边输入一个十进制整数和216之间的数,单
24、击“转换”按钮能在右边得到十进制数所对应的216进制字符串,单击“退出”按钮退出对话框。程序如下:hf=figure(Color,0,1,1,Position,100,200,400,200,.Name,数制转换,NumberTitle,off,MenuBar,none);uicontrol(hf,Style,Text,Units,normalized,.Position,0.05,0.8,0.45,0.1,Horizontal,center,.String,输 入 框,Back,0,1,1);uicontrol(hf,Style,Text,Position,0.5,0.8,0.45,0.1,
25、.Units,normalized,Horizontal,center,.String,输 出 框,Back,0,1,1);uicontrol(hf,Style,Frame,Position,0.04,0.33,0.45,0.45,.Units,normalized,Back,1,1,0);uicontrol(hf,Style,Text,Position,0.05,0.6,0.25,0.1,.Units,normalized,Horizontal,center,.String,十进制数,Back,1,1,0);uicontrol(hf,Style,Text,Position,0.05,0.4,
26、0.25,0.1,.Units,normalized,Horizontal,center,.String,216进制,Back,1,1,0);he1=uicontrol(hf,Style,Edit,Position,0.25,0.6,0.2,0.1,.Units,normalized,Back,0,1,0);he2=uicontrol(hf,Style,Edit,Position,0.25,0.4,0.2,0.1,.Units,normalized,Back,0,1,0);uicontrol(hf,Style,Frame,Position,0.52,0.33,0.45,0.45,.Units,
27、normalized,Back,1,1,0);ht=uicontrol(hf,Style,Text,Position,0.6,0.5,0.3,0.1,.Units,normalized,Horizontal,center,Back,0,1,0);COMM=n=str2num(get(he1,String);,b=str2num(get(he2,String);,.dec=trdec(n,b);,set(ht,string,dec);uicontrol(hf,Style,Push,Position,0.18,0.1,0.2,0.12,.String,转 换,Units,normalized,Ca
28、ll,COMM);uicontrol(hf,Style,Push,Position,0.65,0.1,0.2,0.12,.String,退 出,Units,normalized,Call,close(hf);程序调用了trdec.m函数文件,该函数的作用是将任意十进制整数转换为216进制字符串。trdec.m函数文件如下:function dec=trdec(n,b)ch1=0123456789ABCDEF;%十六进制的16个符号 k=1;while n=0%不断除某进制基数取余直到商为0 p(k)=rem(n,b);n=fix(n/b);k=k+1;end k=k-1;strdec=;whi
29、le k=1%形成某进制数的字符串 kb=p(k);strdec=strcat(strdec,ch1(kb+1:kb+1);k=k-1;end dec=strdec;所建立的数制转换对话框如下:例例2 建立图形演示对话框。在编辑框输入绘图命令,单击“绘图”按钮能在左边坐标轴得到所对应的图形,弹出框提供色图控制,列表框提供坐标网格线和坐标边框控制。程序如下:clf;set(gcf,Unit,normalized,Position,0.2,0.3,0.65,0.35);set(gcf,Menubar,none,Name,图形演示,NumberTitle,off);axes(Position,0.0
30、5,0.15,0.55,0.7);uicontrol(gcf,Style,text,Unit,normalized,.Posi,0.63,0.85,0.2,0.1,String,输入绘图命令,Horizontal,center);hedit=uicontrol(gcf,Style,edit,Unit,normalized,Posi,0.63,0.15,0.2,0.68,.Max,2);%Max取2,使Max-Min1,从而允许多行输入 hpopup=uicontrol(gcf,Style,popup,Unit,normalized,.Posi,0.85,0.8,0.15,0.15,String
31、,Spring|Summer|Autumn|Winter);hlist=uicontrol(gcf,Style,list,Unit,normalized,.Posi,0.85,0.55,0.15,0.25,String,Grid on|Grid off|Box on|Box off);hpush1=uicontrol(gcf,Style,push,Unit,normalized,.Posi,0.85,0.35,0.15,0.15,String,绘 图);uicontrol(gcf,Style,push,Unit,normalized,.Posi,0.85,0.15,0.15,0.15,Stri
32、ng,关 闭,Call,close all);set(hpush1,Call,COMM(hedit,hpopup,hlist);set(hlist,Call,COMM(hedit,hpopup,hlist);set(hpopup,Call,COMM(hedit,hpopup,hlist);程序调用了COMM.m函数文件,该函数文件如下:function COMM(hedit,hpopup,hlist)com=get(hedit,String);n1=get(hpopup,Value);n2=get(hlist,Value);if isempty(com)%编辑框输入非空时 eval(com);
33、%执行从编辑框输入的命令 chpop=spring,summer,autumn,winter;chlist=grid on,grid off,box on,box off;colormap(eval(chpopn1);eval(chlistn2);end所建立的图形演示对话框如右图所示:三、菜单设计三、菜单设计1.建立用户菜单建立用户菜单Hm=uimenu(Hp,属性名,属性名1,属性值,属性值1,属性,属性名名2,属性值,属性值2,)功能:功能:创建句柄值为Hm的自定义的用户菜单。其中Hp为其为其父对象的句柄父对象的句柄,属性名和属性值构成属性二元对,定义用户菜单的属性。建立自定义的用户菜单
34、的函数为uimenu,格式为:子菜单项句柄子菜单项句柄=uimenu(一级菜单项句柄,属性名一级菜单项句柄,属性名1,属性值,属性值1,属性名,属性名2,属性值,属性值2,)因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。建立建立一级菜单项一级菜单项的函数调用格式为:的函数调用格式为:一级菜单项句柄一级菜单项句柄=uimenu(图形窗口句柄,属性名图形窗口句柄,属性名1,属性值,属性值1,属性名,属性名2,属性值,属性值2,)建立建立子菜单项子菜单项的函数调用格式为:的函数调用格式为:2.菜单对象常用属性菜单对象常用属性 菜单对象除具有Children(子对象),Parent(父对象
35、),Tag(标签),Type(类型),UserData(用户数据),Enable(使能)和 Visible(可见性)等公共属性,还有一些常用的特殊属性,如回调(callback)属性和菜单名(label)。另外,用户菜单的外观有四个属性:Position(位置),Separator(分隔线),checked(检录符)和ForeGroundColor(前景颜色)。Tag属性属性 Tag属性的取值是字符串,它定义了该菜单对象的一个标识值。定义了Tag属性后,在任何程序中都可以通过这个标识值找出该菜单对象。Type属性属性 Type属性的取值总是uimenu,这个属性值标明图形对象的类型。对菜单对象
36、,其类型就是uimenu,用户不能改写这个属性。例例3 建立“图形演示系统”菜单。菜单条中含有3个菜单项:Plot、Option和Quit。Plot中有Sine Wave和Cosine Wave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容为:Grid on和Grid off控制给坐标轴加网格线,Box on和Box off控制给坐标轴加边框,而且这4项只有在画有曲线时才是可选的。Figure Color控制图形窗口背景颜色。Quit控制是否退出系统。程序如下:UserData属性属性 UserData属性的取值是一个矩阵,缺省值为空矩阵,用户可以在这个属性中保
37、存与该菜单对象相关的重要数据或信息,借此可以达到传递数据或信息的目的。可以用set和get函数访问该属性。screen=get(0,ScreenSize);W=screen(3);H=screen(4);figure(Color,1,1,1,Position,0.2*H,0.2*H,0.6*W,0.4*H,.Name,图形演示系统,NumberTitle,off,MenuBar,none);%定义Plot菜单项hplot=uimenu(gcf,Label,&Plot);uimenu(hplot,Label,Sine Wave,Call,t=-pi:pi/20:pi;,plot(t,sin(t)
38、;,.set(hgon,Enable,on);,set(hgoff,Enable,on);,.set(hbon,Enable,on);,set(hboff,Enable,on););uimenu(hplot,Label,Cosine Wave,Call,t=-pi:pi/20:pi;,plot(t,cos(t);,.set(hgon,Enable,on);,set(hgoff,Enable,on);,.set(hbon,Enable,on);,set(hboff,Enable,on););%定义Option菜单项 hoption=uimenu(gcf,Label,&Option);hgon=u
39、imenu(hoption,Label,&Grig on,Call,grid on,Enable,off);hgoff=uimenu(hoption,Label,&Grig off,Call,grid off,Enable,off);hbon=uimenu(hoption,Label,&Box on,separator,on,Call,box on,Enable,off);hboff=uimenu(hoption,Label,&Box off,Call,box off,Enable,off);hfigcor=uimenu(hoption,Label,&Figure Color,Separato
40、r,on);uimenu(hfigcor,Label,&Red,Accelerator,r,Call,set(gcf,Color,r););uimenu(hfigcor,Label,&Blue,Accelerator,b,Call,set(gcf,Color,b););uimenu(hfigcor,Label,&Yellow,Call,set(gcf,Color,y););uimenu(hfigcor,Label,&White,Call,set(gcf,Color,w););%定义Quit菜单项 uimenu(gcf,Label,&Quit,Call,close(gcf);所建立的“图形演示系
41、统”菜单如下:菜单条中含有两个菜单项。如果选择File中的New选项,则将显示New Item字样,如果选择File中的Open选项,则将显示出Open Item字样。File中的Save菜单项初始时处于禁选状态,在选择Help选项之后将此菜单项恢复成可选状态,如果选择File中的Save选项,则将出现一个新的菜单(三级菜单),其中共有两个子菜单项Text file,如果选择第1项,则将变量k1和k2分别赋为0和1,然后调用文件来进行相应的处理(该文件需要另行编写),如果选择第2项,则将变量k1和k2分别赋为1和0,然后调用文件来进行相应的处理(该文件也需要另行编写)。如果选择File中的Sa
42、ve As选项,则将显示Save As Item字样。如果选择File中的Exit选项,则将关闭当前窗口。如果选择Help中About 选项,则将显示Help Item字样,并将Save菜单设置成可选状态。例例4 建立一个菜单系统。程序如下:screen=get(0,ScreenSize);W=screen(3);H=screen(4);hf=figure(Color,1,1,1,Position,1,1,0.4*W,0.3*H,.Name,菜单设计示例一,NumberTitle,off,MenuBar,none);h(hf,label,&File);hhelp=uimenu(hf,label
43、,&Help);uimenu(hfile,label,&New,call,disp(New Item);uimenu(hfile,label,&Open,call,disp(Open Item);hsave=uimenu(hfile,label,&Save,Enable,off);uimenu(hsave,label,Text file,call,k1=0;k2=1;file01;);uimenu(hsave,label,Graphics file,call,k1=1;k2=0;file10;);uimenu(hfile,label,Save&As,call,disp(Save As Item
44、);uimenu(hfile,label,&Exit,separator,on,call,close(hf);uimenu(hhelp,label,About.,call,.disp(Help Item);,set(hsave,Enable,on);所建立的菜单系统如下:3.快捷菜单快捷菜单利用利用set函数将该快捷菜单和某图形对象联系起来。函数将该快捷菜单和某图形对象联系起来。快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单。这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系。在Matlab中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立快
45、捷菜单,具体步骤为:利用利用uicontextmenu函数建立快捷菜单函数建立快捷菜单,格式为:利用利用uimenu函数为快捷菜单建立菜单项函数为快捷菜单建立菜单项,格式为:功能:功能:为创建的快捷菜单赋值,其中属性名和属性值构成属性二元对。uimenu(快捷菜单名快捷菜单名,属性名,属性值,属性名,属性值,.)功能:功能:建立快捷菜单,并将句柄值赋给变量hc。hc=uicontextmenux=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);hl=plot(x,y);hc=uicontextmenu;%建立快捷菜单hls=uimenu(hc,Label,
46、线型);%建立菜单项hlw=uimenu(hc,Label,线宽);uimenu(hls,Label,虚线,Call,set(hl,LineStyle,:););uimenu(hls,Label,实线,Call,set(hl,LineStyle,-););uimenu(hlw,Label,加宽,Call,set(hl,LineWidth,2););uimenu(hlw,Label,变细,Call,set(hl,LineWidth,0.5););set(hl,UIContextMenu,hc);%将该快捷菜单和曲线对象联系起来例例5 绘制曲线 y=2e-0.5xsin(2x),并建立一个与之相联
47、系的快捷菜单,用以控制曲线的线型和曲线宽度。程序如下:四、对话框设计四、对话框设计1.公共对话框公共对话框 在图形用户界面程序设计中,对话框是重要的信息显示和获取输入数据的用户界面对象。使用对话框,可以使应用程序的界面更加友好,使用更加方便。Matlab 提供了两类对话框,一类为 Windows 的公共对话框的公共对话框,另一类为Matlab 风格的专用对话框风格的专用对话框。公共对话框是利用windows资源的对话框,包括文件打开、文件保存、颜色设置、字体设置、打印设置、打印预览、打印等。文件打开对话框文件打开对话框uuigetfile:弹出文件打开对话框,列出当前目录下的所有Matlab文
48、件;uuigetfile(FilterSpec):弹出文件打开对话框,列出当前目录下的所有由FilterSpec 指定类型的文件;uuigetfile(FilterSpec,DialogTitle):同时设置文件打开对话框的标题为DialogTitle;uuigetfile(FilterSpec,DialogTitle,x,y):x,y参数用于确定文件打开对话框的位置;ufname,pname=uigetfile():返回打开文件的文件名和路径。用于打开文件,函数为 uigetfile,其调用格式为:文件保存对话框文件保存对话框用于保存文件,函数为uiputfile,其调用格式为:uuiput
49、file:弹出文件保存对话框,列出当前目录下的所有Matlab文件;uuiputfile(InitFile):弹出文件保存对话框,列出当前目录下的所有由InitFile指定类型的文件;uuiputfile(InitFile,DialogTitle):同时设置文件保存对话框的标题为DialogTitle;uuiputfile(InitFile,DialogTitle,x,y):x,y参数用于确定文件保存对话框的位置;ufname,pname=uiputfile():返回保存文件的文件名和路径。颜色设置对话框颜色设置对话框 用于图形对象颜色的交互式设置,函数为 uisetcolor,其调用格式为:
50、c=uisetcolor(h_or_c,DialogTitle)输入参数 h_or_c 可以是一个图形对象的句柄,也可以是一个三色 RGB 矢量,DialogTitle为颜色设置对话框的标题。字体设置对话框字体设置对话框用于字体属性的交互式设置,函数为uisetfont,格式为:uuisetfont:打开字体设置对话框,返回所选择字体的属性;uuisetfont(h):h 为图形对象句柄,使用字体设置对话框重新设置该对象的字体属性;uuisetfont(S):S为字体属性结构变量,S中包含的属性有FontName、FontUnits、FontSize、FontWeight、FontAngle,