资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,*,Matlab GUI,图形用户界面设计,1,图形用户界面,(,GUI,),是指由窗口、菜单、,图标、光标、按键,、对话框,和文本,等各种,图形对象,组成的用户界面。,它让用户定制用户与,Matlab,的交互方式,而命令窗口不是唯一与,Matlab,的交互方式。,用户界面,是用户与计算机进行信息交流的方式。计算机在屏幕显示图形和文本,若有扬声器还可产生声音。用户通过输入设备(如:键盘、鼠标、跟踪球、绘制板或麦克风),与计算机通讯。用户界面设定了如何观看和如何感知计算机、操作系统或应用程序。通常,多是根据悦目的结构和用户界面功能的有效性来选择计算机或程序。,2,用户通过鼠标或键盘选择、激活这些图形对象,使计算机产生某种动作或变化。,Matlab,中设计图形用户界面的,方法有两种,:,使用可视化的界面环境,和,通过编写程序,。,由上一讲可知:用户菜单、用户控件和对话框是和坐标轴处于同一层次的,都是图形窗口的子对象。,基本图形对象分为,控件对象,和,用户界面菜单对象,,简称,控件,和,菜单,。,3,图形用户界面设计工具的启动,图形用户界面设计工具的启动方式:,1.,命令方式,图形用户界面,GUI,设计工具的启动命令为,guide,,格式为,:,guide,功能:,启动,GUI,设计工具,并建立名字为,untitled.fig,的图形用户界面。,功能:,启动,GUI,设计工具,并打开已建立的图形用户界面,filename,。,guide filename,4,2.,菜单方式,在,Matlab,的主窗口中,选择,File,菜单中的,New,菜单项,再选择其中的,GUI,命令,就会显示,GUI,的设计模板。,5,Matlab,为,GUI,设计一共准备了,4,种模板,分别是,:,Blank GUI,(,Default,),(,空白模板,默认,);,GUI with Uicontrols,(,带控件对象的,GUI,模板,);,GUI with Axes and Menu,(,带坐标轴与菜单的,GUI,模板,);,Modal Question Dialog,(,带模式问题对话框的,GUI,模板,),。,当用户选择不同的模板时,在,GUI,设计模板界面的右边就会显示出与该模板对应的,GUI,图形。,6,图形用户界面设计工具启动时模板选择对话框,7,图形用户界面设计窗口,图形用户界面,GUI,设计窗口由,菜单栏、工具栏、控件工具栏,以及,图形对象设计区,等,4,个功能区,组成。,在,GUI,设计模板中选中一个模板,然后单击,OK,按钮,就会显示,GUI,设计窗口。选择不同的,GUI,设计模式时,在,GUI,设计窗口中显示的结果是不一样的。,左图为空白,GUI,模板情形,8,GUI,设计窗口的,菜单栏,有,File,、,Edit,、,View,、,Layout,、,Tools,和,Help,6,个菜单项,,使用其中的命令可以完成图形用户界面的设计操作。,编辑工具,在菜单栏的下方,提供了常用的工具;,设计工具区,位于窗口的左半部分,提供了设计,GUI,过程中所用的用户控件;,空间模板区,是网格形式的用户设计,GUI,的空白区域。,在,GUI,设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。,9,Matlab,提供了一套可视化的创建图形窗口的工具,使用图形用户界面开发环境可方便地创建,GUI,应用程序,它可以根据用户设计的,GUI,布局,自动生成,M,文件的框架,用户使用这一框架编制自己的应用程序。,一、图形用户界面开发环境,(GUIDE),M,atlab,提供了一套可视化的创建图形用户接口,(,GUI,),的工具,包括:,10,对象浏览器,(Object Browser),用于获得当前,Matlab,图形用户界面程序中的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器;,布局编辑器,(Layout Edtor),在图形窗口中创建及布置图形对象。布局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编辑器中访问,,用,guide,命令可以启动,或在启动平台窗口中选择,GUIDE,来启动布局编辑器;,几何排列工具,(Alignment Tool),调整各对象相互之间的几何关系和位置;,属性查看器,(Property Inspector),查询并设置属性值,;,菜单编辑器,(Menu Editor),创建、设计、修改下拉式菜单和快捷菜单;,Tab,顺序编辑器,(,Tab Order Editor,),用于设置当用户按下键盘上的,Tab,键时,对象被选中的先后顺序。,11,在,Matlab 5,中,,GUI,的设计是以,M,文件的编程形式实现的,,GUI,的布局代码存储在,M,文件和,MAT,文件中,而在,Matlab,6,中有了很大的改变,,Matlab,6,将,GUI,的布局代码存储在,FIG,文件中,同时还产生一个,M,文件用于存储调用函数,在,M,文件中不再包含,GUI,的布局代码,在开发应用程序时代码量大大减少。,用于从控件选择板上选择控件对象并放置到布局区去,布局区被激活后就成为图形窗口。在命令窗口输入,GUIDE,命令或点击工具栏中的,guide,图标都可以,打开空白的布局编辑器,,在命令窗口输入,GUIDE filename,可,打开一个已存在的,名为,filename,图形用户界面。,1.,布局编辑器,(Layout editor),12,将控件对象放置到布局区,用鼠标选择并放置控件到布局区内;,移动控件到适当的位置;,改变控件的大小;,选中多个对象的方法。,一个简单的布局示例,13,如所建立的布局还没有进行存储,可用,File,菜单下的,Save As,菜单项(,或,工具栏中的对应项,),按输入的文件的名字,在激活图形窗口的同时将存储一对同名的,M,文件和带有,.fig,扩展名的,FIG,文件。,激活图形窗口,14,运行,GUI,程序,在命令窗口直接键入文件名或用,openfig,open,或,hgload,命令运行,GUI,程序。,15,布局编辑器参数设置,选,File,菜单下的,Preferences,菜单项打开参数设置窗口,点击树状目录中的,GUIDE,,,即可以设置布局编辑器的参数。,16,布局编辑器的弹出菜单,在任一控件上按下鼠标右键,会弹出一个菜单,通过该菜单可以完成布局编辑器的大部分操作。,17,2.,位置调整工具,(Alignment tool),在选中多个对象后,可以方便的通过对象位置调整器调整对象间的对齐方式和距离。,对象位置调整器中的第一栏是垂直方向的位置调整,第二栏是水平方向的位置调整。,利用位置调整工具,可以对,GUI,对象设计区内的多个对象的位置进行调整。,位置调整工具的打开方式有两种:,从,GUI,设计窗口的工具栏上选择,Align Objects,命令按钮,;,选择,Tools,菜单下的,Align Objects.,菜单项,就可以打开对象位置调整器。,18,利用对象属性查看器,可以查看每个对象的属性值,也可以修改、设置对象的属性值。,3.,用属性查看器设置控件属性,打开属性查看器,(Opening Property Inspector),对象属性查看器的打开方式有四种:,从,GUI,设计窗口工具栏上选择,Property Inspector,命令按钮,;,选择,View,菜单下的,Property Inspector,菜单项;,在控件对象上单击鼠标右键,选择弹出菜单的,Property Inspector,菜单项。,在命令窗口中输入,inspect,;,19,布置控件;,定义文本框的属性;,定义坐标轴的属性;,定义按钮的属性;,定义复选框。,使用属性查看器,(Using Property Inspector),20,利用菜单编辑器,可以创建、设置、修改下拉式菜单和快捷菜单。选择,Tools,菜单下的,Menu Editor.,子菜单,即可打开菜单编辑器。,4.,菜单编辑器,(Menu Editor),菜单也可以通过编程实现,方法为从,GUI,设计窗口的工具栏上选择,Menu Editor,命令按钮,打开菜单编辑程序。,21,菜单编辑器包括菜单的设计和编辑,菜单编辑器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置菜单项的属性,包括名称,(Label),、,标识,(Tag),、,选择是否显示分隔线,(Separator above this item),、,是否在菜单前加上选中标记,(Item is checked),、,调用函数,(Callback),。,22,菜单编辑器左上角的第一个按钮用于创建一级菜单项。第二个按钮用于创建一级菜单的子菜单。,23,菜单编辑器的左下角有两个按钮,选择第一个按钮,可以创建下拉式菜单。选择第二个按钮,可以创建,Context Menu,菜单。选择它后,菜单编辑器左上角的第三个按钮就会变成可用,单击它就可以创建,Context Menu,主菜单。在选中已经创建的,Context Menu,主菜单后,可以单击第二个按钮创建选中的,Context Menu,主菜单的子菜单。与下拉式菜单一样,选中创建的某个,Context Menu,菜单,菜单编辑器的右边就会显示该菜单的有关属性,可以在这里设置、修改菜单的属性。,24,菜单编辑器左上角的第四个与第五个按钮用于对选中的菜单进行左移与右移,第六与第七个按钮用于对选中的菜单进行上移与下移,最右边的按钮用于删除选中的菜单。,25,5.,对象浏览器,(Object Browsers),利用对象浏览器,可以查看当前设计阶段的各个句柄图形对象。可以在对象浏览器中选中一个或多个控件来打开该控件的属性编辑器。,对象浏览器的打开方式有:,从,GUI,设计窗口的工具栏上选择,Object Browser,命令按钮,;,选择,View,菜单下的,Object Browser,子菜单;,在设计区域单击鼠标右键,选择弹出菜单的,Object Browser,。,26,.Tab,顺序编辑器,(,Tab Order Editor,),利用,Tab,顺序编辑器,(Tab Order Editor),,可以设置用户按键盘上的,Tab,键时,对象被选中的先后顺序。,Tab,顺序编辑器的打开方式为:,选择,Tools,菜单下的,Tab Order Editor.,菜单项,就可以打开,Tab,顺序编辑器。,从,GUI,设计窗口的工具栏上选择,Tab Order Editor.,命令按钮。,27,1.GUI,控件对象类型,控件对象是事件响应的图形界面对象。当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序,(,Callback,),.,2.,控件对象的描述,Matlab,中的控件大致可分为两种,一种为,动作控件,,鼠标点击这些控件时会产生相应的响应。一种为,静态控件,,是一种不产生响应的控件,如文本框等。,二、控件对象及属性,每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,既属性。属性由两部分组成:属性名和属性值,它们必须是成对出现的。,28,按钮,(Push Buttons),:,执行某种预定的功能或操作;,开关按钮,(Toggle Button),:,产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行,callback,(回调函数)中指定的内容,再次点击,按钮复原,并再次执行,callback,中的内容;,单选框,(Radio Button),:,单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;,复选框,(Check Boxes),:,单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;,文本编辑器,(Editable Texts),:,用来使用键盘输入字符串 的值,可以对编辑框中的内容进行编辑、删除和替换等操作;,29,静态文本框,(Static Texts):,仅用于显示单行的说明文字,;,滚动条,(Slider),:,可输入指定范围的数量值;,边框,(Frames),:,在图形窗口圈出一块区域;,列表框,(List Boxes),:,在其中定义一系列可供选择的字符串;,弹出式菜单,(Popup Menus),:,让用户从一列菜单项中选择一项作为参数输入;,此外还有坐标轴,(Axes),,用于显示图形和图象。,30,用户可以在创建控件对象时,设定其属性值,未指定时将使用系统缺省值。,3.,控件对象的属性,(Attributes of controller object),两大类控件对象属性:第一类是所有控件对象都具有的公共属性,第二类是控件对象作为图形对象所具有的属性。,31,控件对象的公共属性,Children,取值为空矩阵,因为控件对象没有自己的子对象;,Tag,取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象;,Type,取值为,uicontrol,,表明图形对象的类型;,Visible,取值为,on,或,off,。,UserDate,取值为空矩阵,用于保存与该控件对象相关的重要数据和信息;,Parent,取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口;,32,BackgroundColor,取值为颜色的预定义字符或,RGB,数值;缺省值为浅灰色;,Callback,取值为字符串,,可以是某个,M,文件名或一小段,Matlab,语句,,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序;,Enable,取值为,on,(缺省值),inactive,和,off,;,Extend,取值为四元素矢量,0,0,width,height,,记录控件对象标题字符的位置和尺寸;,ForegroundColor,取值为颜色的预定义字符或,RGB,数值,该属性定义控件对象标题字符的颜色;缺省值为黑色;,Max,,,Min,取值都为数值,缺省值分别为,1,和,0,;,String,取值为字符串矩阵或块数组,定义控件对象,标题,或选项内容;,Style,取值可以是,pushbutton(,缺省值,),radiobutton,checkbox,edit,text,slider,frame,popupmenu,或,listbox,;,Units,取值可以是,pixels(,缺省值,),normalized,(相对单位),inches,centimeters,(厘米)或,points,(磅);,Value,取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型。,控件对象的基本控制属性,33,FontAngle,取值为,normal,(正体,缺省值),italic,(斜体),oblique,(方头);,FontName,取值为控件标题等字体的字库名;,FontSize,取值为数值;,FontUnits,取值为,points,(缺省值),normalized,inches,centimeters,或,pixels,;,FontWeight,取值为,normal,(缺省值),light,,,demi,和,bold,,定义字符的粗细;,HorizontalAligment,取值为,left,,,center,(缺省值)或,right,,定义控件对象标题等的对齐方式。,控件对象的修饰控制属性,34,ListboxTop,取值为数量值,用于,listbox,控件对象;,SliderStep,取值为两元素矢量,minstep,maxstep,,用于,slider,控件对象;,Selected,取值为,on,或,off,(缺省值),;,SlectionHoghlight,取值为,on,或,off,(缺省值),。,控件对象的辅助属性,BusyAction,取值为,cancel,或,queue,(缺省值),;,ButtDownFun,取值为字符串,一般为某个,M,文件名或一小段,Matlab,程序;,Creatfun,取值为字符串,一般为某个,M,文件名或一小段,Matlab,程序;,DeletFun,取值为字符串,一般为某个,M,文件名或一小段,Matlab,程序;,HandleVisibility,取值为,on,(缺省值),callback,或,off,;,Interruptible,取值为,on,或,off,(缺省值),。,Callback,管理属性,35,4.,控件对象的建立,Matlab,提供了用于建立控件对象的函数,uicontrol,,其调用格式为:,对象句柄,=,uicontrol,(,图形窗口句柄,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),其中各个属性名及可取的值和后面将介绍的,uimenu,函数相似,但也不尽相同。,在对话框上有各种各样的控件,利用这些控件可以实现有关控制。,例,1,建立数制转换对话框。在左边输入一个十进制整数和,2,16,之间的数,单击“转换”按钮能在右边得到十进制数所对应的,2,16,进制字符串,单击“退出”按钮退出对话框。,程序如下:,36,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,.,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,0.25,0.1,.,Units,normalized,Horizontal,center,.,String,2,16,进制,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,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,Call,COMM);,uicontrol(hf,Style,Push,Position,0.65,0.1,0.2,0.12,.,String,退 出,Units,normalized,Call,close(hf);,37,程序调用了,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=;,while k=1%,形成某进制数的字符串,kb=p(k);,strdec=strcat(strdec,ch1(kb+1:kb+1);,k=k-1;,end,dec=strdec;,38,所建立的数制转换对话框如下:,39,例,2,建立图形演示对话框。在编辑框输入绘图命令,单击“绘图”按钮能在左边坐标轴得到所对应的图形,弹出框提供色图控制,列表框提供坐标网格线和坐标边框控制。,程序如下:,40,clf;,set(gcf,Unit,normalized,Position,0.2,0.3,0.65,0.35);,set(gcf,Menubar,none,Name,图形演示,NumberTitle,off);,axes(Position,0.05,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,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,String,关 闭,Call,close all);,set(hpush1,Call,COMM(hedit,hpopup,hlist);,set(hlist,Call,COMM(hedit,hpopup,hlist);,set(hpopup,Call,COMM(hedit,hpopup,hlist);,41,程序调用了,COMM.m,函数文件,,该函数文件如下:,function COMM(hedit,hpopup,hlist),com=get(hedit,String);,n1=get(hpopup,Value);,n2=get(hlist,Value);,if isempty(com)%,编辑框输入非空时,eval(com);%,执行从编辑框输入的命令,chpop=spring,summer,autumn,winter;,chlist=grid on,grid off,box on,box off;,colormap(eval(chpopn1);,eval(chlistn2);,end,所建立的图形演示对话框如右图所示:,42,三、菜单设计,1.,建立用户菜单,Hm=uimenu(Hp,,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),功能:,创建句柄值为,Hm,的自定义的用户菜单。其中,Hp,为其父对象的句柄,,属性名和属性值构成属性二元对,定义用户菜单的属性。,建立自定义的用户菜单的函数为,uimenu,,格式为:,43,子菜单项句柄,=uimenu(,一级菜单项句柄,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。,建立,一级菜单项,的函数调用格式为:,一级菜单项句柄,=uimenu(,图形窗口句柄,属性名,1,,属性值,1,,属性名,2,,属性值,2,,,),建立,子菜单项,的函数调用格式为:,44,2.,菜单对象常用属性,菜单对象除具有,Children,(子对象),,Parent,(父对象),,Tag,(标签),,Type,(类型),,UserData,(用户数据),,Enable,(使能)和,Visible,(可见性)等公共属性,还有一些常用的特殊属性,如回调(,callback,)属性和菜单名,(,label)。,另外,用户菜单的外观有四个属性:,Position,(位置),,Separator,(分隔线),,checked,(检录符)和,ForeGroundColor,(前景颜色)。,Tag,属性,Tag,属性的取值是字符串,它定义了该菜单对象的一个标识值。定义了,Tag,属性后,在任何程序中都可以通过这个标识值找出该菜单对象。,Type,属性,Type,属性的取值总是,uimenu,,这个属性值标明图形对象的类型。对菜单对象,其类型就是,uimenu,,用户不能改写这个属性。,45,例,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,属性的取值是一个矩阵,缺省值为空矩阵,用户可以在这个属性中保存与该菜单对象相关的重要数据或信息,借此可以达到传递数据或信息的目的。可以用,set,和,get,函数访问该属性。,46,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,uimenu(hplot,Label,Sine Wave,Call,t=-pi:pi/20:pi;,plot(t,sin(t);,.,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,hgon=uimenu(hoption,Label,hgoff=uimenu(hoption,Label,hbon=uimenu(hoption,Label,hboff=uimenu(hoption,Label,hfigcor=uimenu(hoption,Label,uimenu(hfigcor,Label,uimenu(hfigcor,Label,uimenu(hfigcor,Label,uimenu(hfigcor,Label,%,定义,Quit,菜单项,uimenu(gcf,Label,47,所建立的“图形演示系统”菜单如下:,48,菜单条中含有,File,和,Help,两个菜单项。如果选择,File,中的,New,选项,则将显示,New Item,字样,如果选择,File,中的,Open,选项,则将显示出,Open Item,字样。,File,中的,Save,菜单项初始时处于禁选状态,在选择,Help,选项之后将此菜单项恢复成可选状态,如果选择,File,中的,Save,选项,则将出现一个新的菜单,(,三级菜单,),,其中共有两个子菜单项,Text file,和,Graphics file,,如果选择第,1,项,则将变量,k1,和,k2,分别赋为,0,和,1,,然后调用,file01.m,文件来进行相应的处理,(,该文件需要另行编写,),,如果选择第,2,项,则将变量,k1,和,k2,分别赋为,1,和,0,,然后调用,file10.m,文件来进行相应的处理,(,该文件也需要另行编写,),。如果选择,File,中的,Save As,选项,则将显示,Save As Item,字样。如果选择,File,中的,Exit,选项,则将关闭当前窗口。如果选择,Help,中,About,选项,则将显示,Help Item,字样,并将,Save,菜单设置成可选状态。,例,4,建立一个菜单系统。,49,程序如下:,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);,hfile=uimenu(hf,label,hhelp=uimenu(hf,label,uimenu(hfile,label,uimenu(hfile,label,hsave=uimenu(hfile,label,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,uimenu(hfile,label,uimenu(hhelp,label,About.,call,.,disp(Help Item);,set(hsave,Enable,on);,50,所建立的菜单系统如下:,51,3.,快捷菜单,利用,set,函数将该快捷菜单和某图形对象联系起来。,快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单。,这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系。,在,Matlab,中,可以使用,uicontextmenu,函数和图形对象的,UIContextMenu,属性来建立快捷菜单,具体步骤为,:,利用,uicontextmenu,函数建立快捷菜单,,格式为:,利用,uimenu,函数为快捷菜单建立菜单项,,格式为:,功能:,为创建的快捷菜单赋值,其中属性名和属性值构成属性二元对。,uimenu(,快捷菜单名,属性名,属性值,,.),功能:,建立快捷菜单,并将句柄值赋给变量,hc。,hc=uicontextmenu,52,x=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,线型,);%,建立菜单项,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),,并建立一个与之相联系的快捷菜单,用以控制曲线的线型和曲线宽度。,程序如下:,53,54,四、对话框设计,1.,公共对话框,在图形用户界面程序设计中,对话框是重要的信息显示和获取输入数据的用户界面对象。使用对话框,可以使应用程序的界面更加友好,使用更加方便。,Matlab,提供了两类对话框,一类为,Windows,的公共对话框,,,另一类为,Matlab,风格的专用对话框,。,公共对话框是利用,windows,资源的对话框,包括文件打开、文件保存、颜色设置、字体设置、打印设置、打印预览、打印等。,55,文件打开对话框,uigetfile,:,弹出文件打开对话框,列出当前目录下的所有,Matlab,文件;,uigetfile(FilterSpec),:,弹出文件打开对话框,列出当前目录下的所有由,FilterSpec,指定类型的文件;,uigetfile(FilterSpec,DialogTitle),:,同时设置文件打开对话框的标题为,DialogTitle,;,uigetfile(FilterSpec,DialogTitle,x,y),:,x,y,参数用于确定文件打开对话框的位置;,fname,pname=uigetfile(),:,返回打开文件的文件名和路径。,用于打开文件,函数为,uigetfile,,其调用格式为:,56,文件保存对话框,用于保存文件,函数为,uiputfile,,其调用格式为:,uiputfile,:,弹出文件保存对话框,列出当前目录下的所有,Matlab,文件;,uiputfile(InitFile),:,弹出文件保存对话框,列出当前目录下的所有由,InitFile,指定类型的文件;,uiputfile(InitFile,DialogTitle),:,同时设置文件保存对话框的标题为,DialogTitle,;,uiputfile(InitFile,DialogTitle,x,y),:,x,y,参数用于确定文件保存对话框的位置;,fname,pname=uiputfile(),:,返回保存文件的文件名和路径。,57,颜色设置对话框,用于图形对象颜色的交互式设置,函数为,uisetcolor,,其调用格式为:,c=uisetcolor(h_or_c,DialogTitle),输入参数,h_or_c,可以是一个图形对象的句柄,也可以是一个三色,RGB,矢量,,DialogTitle,为颜色设置对话框的标题。,58,字体设置对话框,用于字体属性的交互式设置,函数为,uisetfont,,格式为:,uisetfont,:,打开字体设置对话框,返回所选择字体的属性,;,uisetfont(h),:,h,为图形对象句柄,使用字体设置对话框重新设置该对象的字体属性;,uisetfont(S),:,S,为字体属性结构变量,,S,中包含的属
展开阅读全文