《(精品)第7章MATLAB图形用户界面设计.ppt》由会员分享,可在线阅读,更多相关《(精品)第7章MATLAB图形用户界面设计.ppt(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章 MATLAB图形用户界面设计7.1 菜单设计7.2 对话框设计7.3 用户界面设计工具7.1 菜单设计7.1.1 用户菜单的建立建立一级菜单项的函数调用形式为:一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,)建立子菜单项的函数调用形式为:子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,)7.1.2 菜单对象常用属性菜单对象具有Children、Parent、Tag、Type、UserData、Visible等公共属性。除公共属性外,还有一些常用的特殊属性。例7.1建立“图形演示系统”菜单。菜单条中含有3个菜单项:
2、Plot、Option和Quit。Plot中有Sine Wave和Cosine Wave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容如图7.1所示。其中Grid on和Grid off控制给坐标轴加网格线,Box on和Box off控制给坐标轴加边框,而且这4项只有在画有曲线时才是可选的。Figure Color控制图形窗口背景颜色。Quit控制是否退出系统。程序如下: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
3、.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);,.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
4、,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=uimenu(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 o
5、n,separator,on,Call,box on,Enable,off);hboff=uimenu(hoption,Label,&Box off,Call,box off,Enable,off);hfigcor=uimenu(hoption,Label,&Figure Color,Separator,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
6、,Label,&Yellow,Call,set(gcf,Color,y););uimenu(hfigcor,Label,&White,Call,set(gcf,Color,w););%定义Quit菜单项 uimenu(gcf,Label,&Quit,Call,close(gcf);7.1.3 快捷菜单在MATLAB中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立快捷菜单,具体步骤为:(1)利用uicontextmenu函数建立快捷菜单。(2)利用uimenu函数为快捷菜单建立菜单项。(3)利用set函数将该快捷菜单和某图形对象联系起来。例7.2 绘制曲
7、线y=2e-0.5xsin(2x),并建立一个与之相联系的快捷菜单,用以控制曲线的线型和曲线宽度。程序如下: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,Lab
8、el,加宽,Call,set(hl,LineWidth,2););uimenu(hlw,Label,变细,Call,set(hl,LineWidth,0.5););set(hl,UIContextMenu,hc);%将该快捷菜单和曲线对象联系起来7.2 对话框设计7.2.1 对话框的控件(1)按钮(Push Button)。(2)双位按钮(Toggle Button)。(3)单选按钮(Radio Button)。(4)复选框(Check Box)。(5)列表框(List Box)。(6)弹出框(Popup Menu)。(7)编辑框(Edit Box)。(8)滑动条(Slider)。(9)静态文
9、本(Static Text)。(10)边框(Frame)。7.2.2 对话框的设计 1.建立控件对象 MATLAB提供了用于建立控件对象的函数uicontrol,其调用格式为:对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,)其中各个属性名及可取的值和前面介绍的uimenu函数相似,但也不尽相同,下面将介绍一些常用的属性。2.控件对象的属性 MATLAB的10种控件对象使用相同的属性类型,但是这些属性对于不同类型的控件对象,其含义不尽相同。除Children、Parent、Tag、Type、UserData、Visible等公共属性外,还有一些常用的特殊属性
10、。例7.3 建立数制转换对话框。在左边输入一个十进制整数和216之间的数,单击“转换”按钮能在右边得到十进制数所对应的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
11、,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);uico
12、ntrol(hf,Style,Text,Position,0.05,0.4,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,Fram
13、e,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.
14、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);程序调用了trdec.m函数文件,该函数的作用是将任意十进制整数转换为216进制字符串。trdec.m函数文件如下:function dec=trdec(n,b)ch1=0123456789ABCDEF;%十六进制的16个符号 k=1;while n=0%不断除某进制基数取余直到商为0 p(k)=rem(n,b);
15、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;enddec=strdec;例7.4 建立图形演示对话框。在编辑框输入绘图命令,单击“绘图”按钮能在左边坐标轴得到所对应的图形,弹出框提供色图控制,列表框提供坐标网格线和坐标边框控制。程序如下:clf;set(gcf,Unit,normalized,Position,0.2,0.3,0.65,0.35);set(gcf,Menubar,none,Name,图形演示,NumberTitl
16、e,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
17、.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,
18、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);COMM.m函数文件:function COMM(hedit,hpopup,hlist)com=get(hedit,String);n1=get(hpopup,Value);n2=get(hlist,Value);if isempty(com)%编辑框输入非空时
19、 eval(com);%执行从编辑框输入的命令 chpop=spring,summer,autumn,winter;chlist=grid on,grid off,box on,box off;colormap(eval(chpopn1);eval(chlistn2);end7.3 用户界面设计工具 7.3.1 图形界面控制面板 7.3.2 属性编辑器 7.3.3 事件过程编辑器 7.3.4 菜单编辑器 7.4.5 位置调整工具 例7.5 利用界面设计工具设计用户界面。具体要求是:(1)在编辑框输入形成数据z的命令,然后选择三个按钮中的一个,即可绘制出z的图形。(2)选择弹出框中的某个色图,能及时地更改绘图的颜色。(3)在图形窗口缺省的菜单条上添加一个菜单项Options,Options下又有两个子菜单项White和Red,选中White项时,图形窗口将变成白色,选中Red项时,图形窗口将变成红色。操作步骤如下:(1)打开图形界面控制面板,添加有关图形对象。(2)利用属性编辑器,设置图形对象的属性。(3)添加Options菜单项。
限制150内