第10章MATLAB图形用户界面设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

MATLAB程序设计教程(第二版)刘卫国主编中国水利水电出版社第10章MATLAB图形用户界面设计MATLAB用户界面对象的组成MATLAB菜单设计MATLAB对话框设计MATLAB图形用户界面设计工具10.1用户界面对象在MATLAB中,每一个图形用户界面都是由若干个不同的用户界面对象(UI)组成的。用户界面对象也是有层次的,其层次结构如图所示。10.2.1建立用户菜单要建立用户菜单可用uimenu函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。建立一级菜单项的函数调用格式为:一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)建立子菜单项的函数调用格式为:子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,…)10.2菜单设计10.1.2菜单对象常用属性菜单对象具有Children、Parent、Tag、Type、UserData、Visible等公共属性,除公共属性外,还有一些常用的特殊属性。菜单条中含有3个菜单项:Plot、Option和Quit。Plot中有SineWave和CosineWave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容如图10-1所示,其中Gridon和Gridoff控制给坐标轴加网格线,Boxon和Boxoff控制给坐标轴加边框,而且这4项只有在画有曲线时才是可选的。WindowColor控制图形窗口背景颜色。Quit控制是否退出系统。例10-1建立图10-1所示的图形演示系统菜单。例10-1源程序:设置窗口screen=get(0,'ScreenSize');W=screen(3);H=screen(4);figure('Color',[1,1,1],'Position',[0.2*H,0.2*H,0.5*W,0.3*H],...'Name','图形演示系统','NumberTitle','off','MenuBar','none');例10-1源程序:设置PLOT菜单项%设置PLOT菜单项hplot=uimenu(gcf,'Label','&Plot');uimenu(hplot,'Label','SineWave','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','CosineWave','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=uimenu(hoption,'Label','&Gridon',...'Call','gridon','Enable','off');hgoff=uimenu(hoption,'Label','&Gridoff',...'Call','gridoff','Enable','off');hbon=uimenu(hoption,'Label','&Boxon',...'separator','on','Call','boxon','Enable','off');hboff=uimenu(hoption,'Label','&Boxoff',...'Call','boxoff','Enable','off');hwincor=uimenu(hoption,'Label','&WindowColor','Separator','on');uimenu(hwincor,'Label','&Red','Accelerator','r',...'Call','set(gcf,''Color'',''r'');');uimenu(hwincor,'Label','&Blue','Accelerator','b',...'Call','set(gcf,''Color'',''b'');');uimenu(hwincor,'Label','&Yellow','Call',...'set(gcf,''Color'',''y'');');uimenu(hwincor,'Label','&White','Call',...'set(gcf,''Color'',''w'');');设置Quit菜单%设置Quit菜单uimenu(gcf,'Label','&Quit','Call','close(gcf)');10.2.3快捷菜单快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单。这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系。在MATLAB中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立快捷菜单,具体步骤为:(1)利用uicontextmenu函数建立快捷菜单。(2)利用uimenu函数为快捷菜单建立菜单项。(3)利用set函数将该快捷菜单和某图形对象联系起来。例10-2绘制曲线y=2sin(5x)sinx,并建立一个与之相联系的快捷菜单,用以控制曲线的线型和曲线宽度。x=0:pi/100:2*pi;y=2*sin(5*x).*sin(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);%连接快捷菜单和曲线´10.3对话框设计对话框的控件:在对话框上有各种各样的控件,利用这些控件可以实现有关控制。按钮(PushButton)双位按钮(ToggleButton)单选按钮(RadioButton)复选框(CheckBox)列表框(ListBox)弹出框(PopupMenu)编辑框(EditBox)滑动条(Slider)静态文本(StaticText)边框(Frame)10.3.2控件的操作1.建立控件对象MATLAB提供了用于建立控件对象的函数uicontrol,其调用格式为:对象句柄=uicontrol(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)其中各个属性名及可取的值和前面介绍的uimenu函数相似,但也不尽相同。2.控件对象的属性MATLAB的10种控件对象使用相同的属性类型,但是这些属性对于不同类型的控件对象,其含义不尽相同。除Children、Parent、Tag、Type、UserData、Visible等公共属性外,还有一些常用的特殊属性。10.3.3对话框设计示例例10-3建立如图10-11所示的数制转换对话框。在左边输入一个十进制整数和2~16之间的数,单击“转换”按钮能在右边得到十进制数所对应的2~16进制字符串,单击“退出”按钮退出对话框。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','normaliz

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功