版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章图形界面编程
(GraphicalUserInterface,GUI)第九章图形界面编程一、常用对话框的设计
二、图形界面设计
三、可视化图形用户界面设计一、常用对话框的设计
二、图形界面设计
三、可视化图形用一、常用对话框的设计(1)创建对话框dialogh=dialog('PropertyName',ProperValue,...)
返回一个对话框句柄。该函数产生一个图形对象并为对话框设置推荐的图形属性。Note:该函数的属性是图形Figure的属性Example:h=dialog('Name','图形对话框','Position',...[240,240,200,50],'Color','r')一、常用对话框的设计(1)创建对话框dialogExamp(2)创建输入对话框inputdlganswer=inputdlg(prompt)answer=inputdlg(prompt,title)answer=inputdlg(prompt,title,lineNo)answer=inputdlg(prompt,title,lineNo,defAns)answer=inputdlg(prompt,title,lineNo,defAns,Resize)对应描述:prompt是一个包含提示字符串的数组。创建一个模式对话框并返回用户在数组中输入的内容title为对话框指定一个标题lineNo为用户的每个输入值指定输入的行数,可以是标量、列向量或矩阵。列向量为一个提示符指定输入的行数;矩阵是m*2矩阵,其中m是对话框中提示符的个数,矩阵的第一列为指定输入的行数;第二列指定字符的域宽。defAns指定每个提示符的默认值Resize说明对话框是否改变尺寸,取值'on'和'off'。(2)创建输入对话框inputdlg对应描述:prompt是
例ans=inputdlg('请输入题号(1-10),输入0退出','Matlabzuoye')例pp={'a=?','b=?'}ans=inputdlg(pp,'InputParam')matlab图形界面编程课件例inputdlg('AAAAAAA')inputdlg('AAAAAAA','inputdialog')inputdlg('AAAAAAA','inputdialog',2)inputdlg('AAAAAAA','inputdialog',1,{'OOOOOOOO'})inputdlg('AAAAAAA','inputdialog',1,{'OOOOOOOO'},'on')Cellarray例创建输入一个整数和色图名称的对话框,每行只允许输入一行。prompt={'EnterMatrixsize','Entercolomapname'};title='Inputdataforpeaksfunction';lines=1;def={'20','hsv'};answer=inputdlg(prompt,title,lines,def)例Cellarray例创建输入一个整数和色图名称的对话(3)创建消息对话框msgboxmsgbox(message)msgbox(message,title)msgbox(message,title,'icon')msgbox(message,title,'custom',iconData,iconCmap)msgbox(...,'createMode')h=msgbox(...)对应描述:产生一个消息对话框title为消息对话框指定标题Icon指定在消息对话框中显示哪一个图标.'icon'可以是'none'、'error'、'help'、'warn'、'custom'定义一个用户定制的图标。iconData包含着定义图标的图形数据;iconCmap是图形所用的色图指定消息框是否为模式化的,如果是非模式化的,是否要取代其它有同样标题的消息框。''createMode'取'modal'、'non-modal'和'replace'返回一个对话框的句柄h,它是一个图形对象的句柄。(3)创建消息对话框msgboxNote:消息对话中的消息自动换行来适应具有适当尺寸的图框。Message是一个字符串向量、字符串矩阵或数组。例
mess={'Inputdlghelp','Listdlghelp';'Msgboxhelp',...'Pagedlghelp'}msgbox(mess,'MyDialogHelp','help')mess='Inputdlghelp''Listdlghelp''Msgboxhelp''Pagedlghelp'Note:消息对话中的消息自动换行来适应具有适当尺寸的图框。(4)创建错误对话框errordlgerrordlgerrordlg('eerrorstring')errordlg('eerrorstring','dlgname')errordlg('eerrorstring','dlgname','on')h=errordlg(...)相应描述:a)显示一个包含字符串”Thisisthedefaulterrorstring”的名为”ErrorDialog”的对话框b)显示一个包含字符串”errorstring”的名为”ErrorDialog”的对话框;c)显示一个包含字符串”errorstring”的名”dlgname”的对话框d)指定是否取代一个已经存在的有相同名字的对话框。'on'表示把一个有相同名字的出错对话框提在前台;e)返回一个错误对话框句柄。(4)创建错误对话框errordlg相应描述:b)显示一个Note:MATLAB自动改变对话框的大小来适应字符串'errorstring'的长度.例errordlgerrordlg('Filenotfound')errordlg('Filenotfound','FileError')errordlg('Filenotfound','FileError','on')Note:MATLAB自动改变对话框的大小来适应字符串(5)创建问题对话框questdlgbutton=questdlg('qstring')打开问题提示对话框,有三个按钮,分别为:yes,no和cancel,'questdlg'确定提示信息。button=questdlg('qstring','title')title确定对话框标题。button=questdlg('qstring''title','default')当按回车键时,返回default值,default必须是yes,no或cancel之一。button=questdlg('qstring','title','str1','str2','default')打开问题提示对话框,有两个按钮,分别由str1和str2确定,'qstdlg'确定提示信息,default必须是str1或str2之一。button=questdlg('qstring','title','str1','str2','str3','default')打开问题提示对话框,有三个按钮,分别由str1,str2和str3确定,'qstdlg'确定提示信息,default必须是str1,str2或str3之一。(5)创建问题对话框questdlg例生成一个问询对话框,询问用户是否继续一个假定的操作。button=questdlg('Doyouwanttocontinue?','ContinueOperation','Yes','No','Help','No')
ifstrcmp(button,'Yes')
disp('Creatingfile')
elseifstrcmp(button,'No')
disp('Canceledfileoperation')
elseifstrcmp(button,'Help')
disp('Sorry,nohelp')
end
例生成一个问询对话框,询问用户是否继续一个假定的操作。(6)创建警告对话框warndlgh=warndlg('warningstring','dlgname')打开警告信息对话框,显示warningstring信息,dlgname确定对话框标题,h为返回对话句柄。
例warndlg('PressingOKwillclearMemory',...'Warning!!!')(6)创建警告对话框warndlg例(7)显示帮助对话框helpdlghelpdlghelpdlg('helpstring')helpdlg('helpstring','dlgname')h=helpdlg(...)Note:MATLAB将'helpstring'中的内容自动换行来适应一个对话框的长度。例helpdlghelpdlg('youcanselect10pointsfromfigure')helpdlg('youcanselect10pointsfromfigure',...'pointsselection')(7)显示帮助对话框helpdlg例(8)创建选择列表内容的对话框listdlg[Selection,ok]=listdlg('ListString',S,...)其中,Selection是已经选择的字符串的索引向量;在只有一个选项的模式下,它的长度为1;当点击OK按钮时,ok=1;当点击Cancel按钮时,ok=0;当ok=0时,Selection=[];对话框还有一个Selectall按钮。输入参数和其值的形式列表如下:(8)创建选择列表内容的对话框listdlg其中,输入参数和参数描述ListString指定列表选框的字符串数组SelectionMode值为'sigle'或'multiple'ListSize用像素来衡量尺寸,[wh],[16030]InitialValue最初被选择的列表框选项的索引向量,默认值为1,即第一项Name对话框标题名称PromptString在列表框上部的正文中出现的字符串的数组或矩阵。默认值为{}OKStringOK按钮上的字符串,默认为OKCancelStringCancel按钮上的字符串,默认为Canceluh用户界面控制按钮的高度,用pixel表示,18fus框架和用户截面控制按钮的间隔,pixel,18ffs框架数字的间隔,pixel,8参数描述ListString指定列表选框的字符串数组Se例
创建用户从当前目录中选一个文件的对话框。函数将返回一个向量,该向量的第一个元素是被选文件的索引,第二个元素在没有做选择时为0,做了选择后为1。d=dir;str={}[s,v]=listdlg('PromptString','Selectafile:',...'SelectionMode','single','ListString',str)例创建用户从当前目录中选一个文件的对话框。d=di例创建一个自己的列表对话框str={'AAAAAA','BBBBBBB','CCCCCCC','DDDDDDD'};[s,v]=listdlg('ListString',str,'SelectionMode','multiple',...'ListSize',[200,100],'Name','MyListDialog',...'PromptString','Pleaseselectfollowoptions','ffs',18)MATLAB例创建一个自己的列表对话框str={'AAAAAA','(9)创建显示页面的版面对话框pagedlgpagesetupdlgpagesetupdlg(fig)对应描述对当前图形显示一个页面的版面对话框,使用户可以进行页面设置对由fig指定的图形显示一个页面设置对话框例figurex=0:pi/100:2*pi;y=sin(x);plot(x,y)pagesetupdlg(9)创建显示页面的版面对话框pagedlg例matlab图形界面编程课件(10)创建显示打印对话框printdlgprintdlgprintdlg(fig)printdlg('-crossplatform',fig)对应描述打印当前的图形生成一个对话框,由此用户可以打印句柄fig指定的图形窗口。但该命令不能打印用户菜单对微软的Windows操作系统显示一种标准的交叉平台式的MATLAB打印对话框。(10)创建显示打印对话框printdlg例t=0:pi/100:2*pi;y=sin(x);plot(x,y)printdlg例(11)进程条h=waitbar(x,'title')
显示以title为标题的进程条,x为进程条的比例长度,其值必须在0到1之间,h为返回的进程条对象的句柄。waitbar(x,'title','creatcancelbtn','button_callback')在进程条上使用creatcancelbtn参数创建一个撤销按钮,在进程中按下撤销按钮将调用button_callback函数。waitbar(...,property_name,property_value,...)
选择其它由prompt_name定义的参数,参数值由prompt_value指定。(11)进程条例clch=waitbar(0,'pleasewait...');pause;%暂停,击任一键继续
fori=1:1000
waitbar(i/1000,h,'MyProcess...')endclose(h)例(12)打开文件对话框uigetfileuigetfile
显示一个用于检索一个文件的对话框,列出了当前目前中的文件和目录。uigetfile('FilterSpec')FilterSpec确定最先显示的文章,它可以用通配符*。uigetfile('FilterSpec','DialogTitle')uigetfile('FilterSpec','DialogTitle',x,y)
把对话框定位在[x,y],这里x和y是距左边界和上边界的距离,以像素为单位。[fname,pname]=uigetfile(...)
返回在对话框中选择的文件的名称和路径。fname保存被选中的文件的名称,pname保存路径。(12)打开文件对话框uigetfile例
列出选定目录中的所有.m文件[fname,pname]=uigetfile('C:\DocumentsandSettings\yfzx\MyDocuments\MATLAB\*.m','SampleDialogBox')fname=example5_24.mpname=C:\DocumentsandSettings\yfzx\MyDocuments\MATLAB\例列出选定目录中的所有.m文件fname=pname(13)保存文件对话框uiputfileuiputfile
显示一个中写入文件名的对话框,列出了当前目前中的文件和目录。uiputfile('InitFile')
显示的对话框包含当前路径中由InitFile确定的文件的列表。InitFile可以是一个文件的全名,也可以包含通配符*。uiputfile('InitFile','DialogTitle')uiputfile('InitFile','DialogTitle',x,y)
把对话框定位在[x,y],这里x和y是距左边界和上边界的距离,以像素为单位。[fname,pname]=uiputfile(...)
返回在对话框中选择的文件的名称和路径。fname保存被选中的文件的名称,pname保存路径。
(13)保存文件对话框uiputfile例显示一个标题为'SaveFilename',文件名为aaa.m的对话框。[fname,pname]=uiputfile('aaa.m','SaveFilename')fname=aaa.mpname=C:\DocumentsandSettings\yfzx\桌面\例显示一个标题为'SaveFilename',文件名(14)弹出式菜单函数menu
K=MENU(HEADER,ITEM1,ITEM2,...)
例:K=menu('请选择','plot','mesh','surf')(14)弹出式菜单函数menu二、图形界面设计是指由窗口、菜单、对话框等各种图形元素组成的用户界面。在MATLAB中,基本的图形界面对象包含3类:用户界面控件对象(uicontrol)下拉式菜单对象(uimenu)快捷菜单对象(uicontextmenu)二、图形界面设计1建立用户菜单
要建立用户菜单可用uimenu函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。建立一级菜单项的函数调用格式为:一级菜单项句柄=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,...)建立子菜单项的函数调用格式为:子菜单项句柄=uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,...)1建立用户菜单要建立用户菜单可用uimenu函数两种调用格式的区别建立一级菜单项时,要给出图形窗口句柄。否则,在当前窗口中建立菜单项。如果没有活动窗口,则会自动打开一个图形窗口;建立子菜单项时,必须指定一级菜单项对应的句柄值。菜单项的句柄子菜单项Save的句柄子菜单项SaveAs的句柄例:
hm=uimenu(gcf,'Label','File');hm1=uimenu(hm,'Label','Save')hm2=uimenu(hm,'Label','SaveAs')两种调用格式的区别建立一级菜单项时,要给出图形窗口句柄。否则例建立用户菜单项h=figure('Name','图形界面窗口','NumberTitle','off','MenuBar','none')hm=uimenu(h,'Label','文件');hm1=uimenu(hm,'Label','保存')hm2=uimenu(hm,'Label','另存为')hm3=uimenu(hm,'Label','退出')例建立用户菜单项h=figure('Name','图形界菜单对象常用属性
菜单对象具有Children,Parent,Tag,UserData,Visible等公共属性,除公共属性外,还有一些常用的特殊属性,见下表所示:%hm3=uimenu(hm,'Label','退出','
callback','
close'
)hm3=uimenu(hm,'Label','&Quit','Accelerator','Q','callback','close','Separator','on')快捷键设置菜单对象常用属性菜单对象具有Children,Pare属性名属性值及作用Label取值'字符串',用于定义菜单项的名字.可以在字符串中加(&)对应于下划线,可用Alt激活Accelerator取值任何字母,用于定义菜单的快捷键Callback取值字符串,可以是某个M文件的文件名或一组Matlab命令.该菜单被选中后,自动调用此回调函数.Checked取值'on'或'off',为菜单项定义一个标记,指明菜单项是否被选中Enable取值'on'或'off',控制菜单项的可选择性.不可用时,该菜单呈现灰色.Position定义一级菜单在菜单栏上的相对位置或子菜单项在菜单组内的相对位置.默认为1最左端Separator取值为'on'或'off'.可以用分隔线将将各菜单项分开.属性名属性值及作用Label取值'字符串',用于定义菜单项的例建立图形演示系统菜单,菜单条中含有3个菜单项:Plot、Option和Quit。
Plot中有SineWave和CosineWave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。
Option菜单项的内容,其中Gridon和Gridoff控制给坐标轴加网格线,Boxon和Boxoff控制给坐标轴加边框,而且这4项只有在画有曲线时才是可选的。WindowColor控制图形窗口背景颜色。Quit控制是否退出系统。例建立图形演示系统菜单,菜单条中含有3个菜单项:Plo分析其步骤:Step1:按要求建立图形窗口;Step2:按要求建立第一个菜单项;Step3:按要求建立其子菜单项;Step4:按要求实现对应菜单项和子菜单项功能;Step5:对第二个菜单项,重复step2step4;Step6:结束分析其步骤:screen=get(0,'ScreenSize');w=screen(3);h=screen(4);h=figure('Position',[0.3*h,0.3*h,0.5*w,0.5*h],'Name','图形演示系统','NumberTitle','off','MenuBar','none');hplot=uimenu(h,'Label','&Plot');hplot1=uimenu(hplot,'Label','SineWave','callback','mysin');hplot2=uimenu(hplot,'Label','CosinWave','callback','mycos');screen=get(0,'ScreenSize');hOption=uimenu(h,'Label','&Option');hGridon=uimenu(hOption,'Label','&Gridon','Callback','Gridon','Enable','on');hGridoff=uimenu(hOption,'Label','G&ridoff','Callback','Gridoff','Enable','on');hBoxon=uimenu(hOption,'Label','&Boxon','Callback','boxon','Enable','on','separator','on');hBoxoff=uimenu(hOption,'Label','B&oxoff','Callback','boxoff','Enable','on');hOption=uimenu(h,'Label','&OphWincolor=uimenu(hOption,'Label','&WindowColor','separator','on');hRed=uimenu(hWincolor,'Label','&Red','Accelerator','r','call','set(h,''color'',''r'');');hBule=uimenu(hWincolor,'Label','&Blue','Accelerator','b','call','set(h,''color'',''b'');');hYellow=uimenu(hWincolor,'Label','&Yellow','call','set(h,''color'',''y'');');hBule=uimenu(hWincolor,'Label','&White','call','set(h,''color'',''w'');');hquit=uimenu(h,'Label','&Quit','call','close(h)');hWincolor=uimenu(hOption,'Labe%mysint=-pi:pi/10:pi;plot(t,sin(t))gridon%mycost=-pi:pi/10:pi;plot(t,cos(t))gridon%mysin2快捷菜单
快捷菜单是用鼠标右键单击某对象时在屏幕上弹出的菜单。这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系。在MATLAB中,可以使用Uicontextmenu函数和图形对象的UicontextMenu属性来建立快捷菜单,具体步骤为:
(1)利用uicontextmenu函数建立快捷菜单。
(2)利用uimenu函数为快捷菜单建立菜单项。
(3)利用set函数将该快捷菜单和某图形对象联系起来。2快捷菜单快捷菜单是用鼠标右键单击某对象时在屏幕上例绘制曲线y=2sin(5x)sinx,并建立一个与之相联系的快捷菜单,用以控制曲线的线型、曲线宽度和颜色。例绘制曲线y=2sin(5x)sinx,并建立一个与之相x=0:pi/100:2*pi;y=2*sin(5*x).*sin(x);h=plot(x,y);hc=uicontextmenu;hls=uimenu(hc,'Label','线型');hlw=uimenu(hc,'Label','线宽');hlc=uimenu(hc,'Label','线色');uimenu(hls,'Label','虚线','call','set(h,''LineStyle'','':'');');uimenu(hls,'Label','实线','call','set(h,''LineStyle'',''-'');');uimenu(hlw,'Label','加宽','call','set(h,''LineWidth'',2);');uimenu(hlw,'Label','变细','call','set(h,''LineWidth'',0.5);');uimenu(hlc,'Label','红色','call','set(h,''Color'',''r'');');uimenu(hlc,'Label','绿色','call','set(h,''Color'',''g'');');uimenu(hlc,'Label','黄色','call','set(h,''Color'',''y'');');set(h,'UicontextMenu',hc);建立快捷菜单建立菜单项建立子菜单项并实现功能将快捷菜单和曲线关联x=0:pi/100:2*pi;建立快捷菜单建立菜单项建立子3对话框设计
对话框是人机交互信息的临时窗口,有广泛的用途。目的是使得用户操作更加方便灵活。3对话框设计对话框是人机交互信息的临时窗口,有对话框的控件
设计对话框时,有很多控件,能实现各种各样的功能。常用的控件有控件名PropertyName
功能按钮PushButton最常用的控件,用于响应用户的鼠标单击,按钮上有说明文字说明其作用。切换按钮ToggleButton当单击时会凹凸状态切换。单选按钮RadioButton当单击时会用黑白点切换,总是成组出现,多个单选按钮互斥,一组中只有一个被选中。复选框CheckBox当单击时会用√切换,有选中、不选中和不确定等状态,总是成组出现,多个复选框可同时选用。对话框的控件设计对话框时,有很多控件,能实现各种各样控件名PropertyName功能文本框EditText凹形方框,可随意输入和编辑单行和多行文字,并显示出来。静态文本框StaticText用于显示文字信息,但不接受输入。滚动条Slider可以用图示的方式显示在一个范围内数值的大概值范围,用户可以移动滚动条改变数值。边框Frame将一组控件围在框架中,用于装饰界面。列表框ListBox显示下拉文字列表,用户可以从列表中选择一项和多项。弹出框PopupMenu相当于文本框和列表框的组合,用户可以从下拉列表中选择。控件名Property功能文本框EditText凹形方框,可对话框的设计
在MATLAB中,要设计一个对话框,首先要建立一个图形窗口,然后在图形窗口中放置所涉及到的用户控件对象。(1)建立控件对象命令uicontrolh_control=uicontrol(h_Parent,'PropertyName',ProperValue,...)(2)控件对象的属性对话框控件对象除了Children、Parent、Visible、UserData等公共属性外,还有一些常用的特殊属性。对话框的设计在MATLAB中,要设计一个对话框,首先属性名属性值Position[x,y,w,h],它们的单位Units属性决定Unitspixel、normalized、inches、centiments、pointsCallback取值为字符串,实现该控件的实质性功能String取值为字符串,定义控件对象的说明文字Style取值可以是push、toggle、radio、check、list、popup、edit、text、slider等。定义控件对象的类型。Enable该控件的使能状态‘on’或‘off’Tooltipstring鼠标指针位于该控件时的提示信息显示FontName取值是控件对象标题等使用字体的字库名属性名属性值Position[x,y,w,h],它们的单位UFontSize字号大小FontAngle取值为normalized、italic、obliqueFontUnitsPoints、normalized、inches、centiments、Pixel、FontWeightnormalized、light、demi、boldHorizontal-AlignmentLeft、center、right.决定控件对象上说明文字在水平方向上对齐方式Max和Min取值为数值,默认值为1、0Value属性的取值,可以是向量也可以是数值。说明:对于不同的控件对象(radio,check,slider,listpopup),其Max、Min以及Value值的含义有所不同。FontSize字号大小FontAngle取值为normal例:h_main=figure('name','ademoofguidesign','menubar','none',...'numbertitle','off','position',[100100300100]);h_edit=uicontrol('style','edit','backgroundcolor',[111],'position',[20205020],...'tag','myedit','string','1','horizontalalignment','left');h_but1=uicontrol('style','pushbutton','position',[20505020],'string','INC',...'callback',['v=eval(get(h_edit,''string''));',...'set(h_edit,''string'',int2str(v+1));']);h_but2=uicontrol('style','pushbutton','position',[80505020],'string','DEC',...'callback',['v=eval(get(h_edit,''string''));','set(h_edit,''string'',int2str(v-1));']);例:h_main=figure('name','ademo例2functiongui_demo()%GUI_demoisanotherdemoofGUIdesign.h_main=figure('units','normalized','position',[0.4],...'name','GUIdemostration','numbertitle','off');h_axis=axes('units','normalized','position',[0.7],...'tag','axplot','xlim',[010],'ylim',[-11]);t=0:0.1:10;y=sin(t);line(t,y);bmp1=imread('1.bmp');bmp2=imread('2.bmp');bmp3=imread('3.bmp');bmp4=imread('4.bmp');h_1=uicontrol('style','pushbutton','units','normalized',...'position',[60.1],'cdata',bmp1,...'callback','zoomon','tooltipstring','Enablezooming');h_2=uicontrol('style','pushbutton','units','normalized',...'position',[0.040.450.060.1],'cdata',bmp2,...'callback','zoomxon','tooltipstring','Enablezoomonx-axisonly');h_3=uicontrol('style','pushbutton','units','normalized',...'position',[0.160.450.060.1],'cdata',bmp3,...'callback','zoomyon','tooltipstring','Enablezoomony-axisonly');h_4=uicontrol('style','pushbutton','units','normalized',...'position',[60.1],'cdata',bmp4,...'callback','zoomoff','tooltipstring','Disablezooming');例2functiongui_demo()matlab图形界面编程课件对话框设计例题例
建立按钮对象,单击时绘制正弦函数,同时建立双位按钮,控制是否给坐标加网格线。代码:uicontrol(gcf,'Style','push','Position',[40,5,100,25],...'String','Plot','call','x=0:pi/100:2*pi;plot(x,sin(x))')uicontrol(gcf,'Style','toggle','Position',[170,5,100,25],'String','Grid','call','grid')对话框设计例题例建立按钮对象,单击时绘制正弦函数,同时建例
建立单选按钮,用来设置图形窗口的颜色,只能选择一种颜色。代码:htxt=uicontrol(gcf,'Style','text','Position',[200,130,150,20],'String','ColorOptions')hr=uicontrol(gcf,'Style','radio','Position',[200,100,150,25],'String','red','Value',1,'call',['set(hr,''Value'',1);','set(hb,''Value'',0);','set(hy,''Value'',0);','set(gcf,''Color'',''r'')']');hb=uicontrol(gcf,'Style','radio','Position',[200,75,150,25],'String','blue','Value',1,'call',['set(hb,''Value'',1);','set(hr,''Value'',0);','set(hy,''Value'',0);','set(gcf,''Color'',''b'')']');hy=uicontrol(gcf,'Style','radio','Position',[200,50,150,25],'String','yellow','Value',1,'call',['set(hb,''Value'',0);','set(hr,''Value'',0);','set(hy,''Value'',1);','set(gcf,''Color'',''y'')']');he=uicontrol(gcf,'Style','push','String','Quit','call','close');例建立单选按钮,用来设置图形窗口的颜色,只能选择一种颜色例建立复选框按钮,用来设置图形窗口的颜色、标题、大小等。例建立复选框按钮,用来设置图形窗口的颜色、标题、大小等。htxt=uicontrol(gcf,'style','text','Units',...'normalized','Position',[.],'String',...'SetWindowsProperties');hp=uicontrol(gcf,'Style','check','Units','normalized',...'Position',[.],'String','MyPosition',...'call',['set(gcf,''Position'',[300,300,300,250]);',...'ifget(hp,''Value'')==1,',...'set(gcf,''Position'',[300,200,600,500]),','end']);hc=uicontrol(gcf,'Style','check','Units','normalized',...'Position',[.],'String','MyColor',...'call',['set(gcf,''Color'',''g'');',...'ifget(hc,''Value'')==1,','set(gcf,''Color'',''r''),','end']);htxt=uicontrol(gcf,'style','tehn=uicontrol(gcf,'Style','check','Units','normalized','Position',[.],'String','MyName',...'call',['set(gcf,''Name'',''复选框未被选中'');',...'ifget(hn,''Value'')==1,',...'set(gcf,''Name'',''复选框被选中''),','end']);hn=uicontrol(gcf,'Style','chec例建立下拉列表,列表中包含一组图形形状.当选择某种形状时,要求在图形窗口中画出.ScreenColor=get(gcf,'Color');htext=uicontrol(gcf,'Style','text',...
'String','Pleaseselectoneofshapes',...
'Position',[80,360,200,20],...
'Fontsize',12,'ForegroundColor','b',...
'BackgroundColor',...
[ScreenColor(1),ScreenColor(2),ScreenColor(3)]);hlist=uicontrol(gcf,'Style','list',...'String','line|triangle|square|rectangle|diamond',...'call','Mydraw(hlist)','Position',...[100,200,100,150],'Fontsize',12,'BackgroundColor','w');例建立下拉列表,列表中包含一组图形形状.当选择某种形状时matlab图形界面编程课件例建立两个滚动条,分别用于设置图形窗口的宽度和高度,并利用静态文本说明对象,标出滚动条的数据范围以及当前值.例建立两个滚动条,分别用于设置图形窗口的宽度和高度,并利用screen=get(0,'ScreenSize');w=screen(3);h=screen(4);hfigure=figure('Position',[0.35*h,0.3*h,0.4*w,0.25*h],'Name','滑动条演示窗口','NumberTitle','off','MenuBar','none');图形窗口hslider1=uicontrol(hfigure,'Style','Slider','Position',[50,50,120,20],'Min',200,'Max',800,'Value',400,'callback',['set(azmcur,''String'',num2str(get(hslider1,''Value'')));','set(hfigure,''Position'',[0.35*h,0.3*h,get(hslider1,''Value''),get(hslider2,''Value'')]);']);第一个滑动条screen=get(0,'ScreenSize');图形窗hslider2=uicontrol(hfigure,'Style','Slider','Position',[240,50,120,20],'Min',100,'Max',600,'Value',300,'callback',['set(elvcur,''String'',num2str(get(hslider2,''Value'')));',...'set(hfigure,''Position'',[0.35*h,0.3*h,get(hslider1,''Value''),get(hslider2,''Value'')]);']);第二个滑动条azmmin=uicontrol(hfigure,'Style','text','Position',[20,46,30,20],'String',num2str(get(hslider1,'Min')));elvmmin=uicontrol(hfigure,'Style','text','Position',[210,46,30,20],'String',num2str(get(hslider2,'Min')));用静态文本标出最小值hslider2=uicontrol(hfigure,'Stazmmax=uicontrol(hfigure,'Style','text','Position',[170,46,30,20],'String',num2str(get(hslider1,'max')));elvmmax=uicontrol(hfigure,'Style','text','Position',[360,46,30,20],'String',num2str(get(hslider2,'max')));用静态文本标出最大值azmLabel=uicontrol(hfigure,'Style','text','Position',[50,80,65,20],'String','Width');elvLabel=uicontrol(hfigure,'Style','text','Position',[240,80,65,20],'String','Height');azmcur=uicontrol(hfigure,'Style','text','Position',[120,80,65,20],'String',num2str(get(hslider1,'Value')));elvcur=uicontrol(hfigure,'Style','text','Position',[240,80,65,20],'String',num2str(get(hslider2,'Value')));用静态文本标出当前设置的宽度和高度azmmax=uicontrol(hfigure,'Styl例建立图形演示对话框.在文本框输入”绘图”按钮时,能在左边坐标轴绘制所对应的图形,下拉列表框提供色图控制,列表框提供坐标轴网格线和坐标轴边框控制.str=['t=-pi:pi/10:2*pi;','r=2+sin(t);','[x,y,z]=cylinder(r,30);','surf(x,y,z)'];figure('Name','图形演示','Color',[],'units','normalized','Position',[.],'NumberTitle','off','Menubar','none');haxes=axes('Position',[.0]);例建立图形演示对话框.在文本框输入”绘图”按钮时,能在左htext=uicontrol(gcf,'Style','text','units','normalized','Position',[.],'String','输入绘图命令','FontSize',11,'Horizontal','center','back',[.8.8.8]);hedit=uicontrol(gcf,'Style','edit','units','normalized','Position',[.8],'Max',2,'back','w','String',str);hpopup=uicontrol(gcf,'Style','popup','units','normalized','Position',[.5],'String','Spring|Summer|Autumn|Winter','call','COMM(hedit,hpopup,hlist)','back','w');hlist=uicontrol(gcf,'Style','list','units','normalized','Position',[.5],'String','Gridon|Gridoff|Boxon|Boxoff','call','COMM(hedit,hpopup,hlist)','back','w');htext=uicontrol(gcf,'Style','thpushDraw=uicontrol(gcf,'Style','push','units','normalized','Position',[.5],'String','Draw',
'call','COMM(hedit,hpopup,hlist)','back',[.8.8.8]);hpushClose=uicontrol(gcf,'Style','push','units','normalized','Position',[.5],'String','Quit',
'call','close(gcf)','back',[.8.8.8]);hpushDraw=uicontrol(gcf,'StylefunctionCOMM(hedit,hpopup,hlist)com=get(hedit,'String')if~isempty(com)eval(com)n1=get(hpopup,'Value');n2=get(hlist,'Value');chpop={'spring','summer','autumn','winter'};chlist={'Gridon','Gridoff','Boxon','Boxoff'};colormap(eval(chpop{n1}));eval(chlist{n2});endfunctionCOMM(hedit,hpopup,hli三、可视化图形用户界面设计MATLAB提供了可视化的图形界面开发环境.实现了”所见即所得”.GUI设计模板打开:FileNewGUI模板:四种模板BlankGUI(默认)GUIwithUicontrols(带控件对象的GUI模板)GUIwithAxesandMenu(带坐标轴与菜单的GUI模板)ModalQuestionDialog(带模式问话对话框的GUI模板)三、可视化图形用户界面设计MATLAB提供了可视化的图形GUI设计窗口控件工具栏工具栏菜单栏图形对象设计区GUI设计窗口控件工具栏工具栏菜单栏图形对象设计区GUI设计的基本操作控件属性GUI设计的基本操作控件属性为了添加控件,可以从GUI设计窗口的控件工具栏中选择一个对象,然后以拖曳方式在对象设计区建立该对象,其对象创建方式方便、简单。在GUI设计窗口创建对象后,通过双击该对象,就会显示该对象的属性查看器,通过它可以设置该对象的属性值。在选中对象的前提下,单击鼠标右键,会弹出一个快捷菜单,可以从中选择某个子菜单进行相应的操作。在对象设计区右击鼠标,会显示与图形窗口有关的快捷菜单。为了添加控件,可以从GUI设计窗口的控件工具栏中选择一个对象MATLAB的用户界面设计工具有:(1)对象属性查看器(PropertyInspector):可查看每个对象的属性值,也可修改设置对象的属性值。(2)对象浏览器(ObjectBrowser):可观察当前设计阶段的各个句柄图形对象。(3)菜单编辑器(MenuEditor):创建、设计、修改下拉式菜单和快捷菜单。(4)位置调整工具(AlignmentTool):可利用该工具左右、上下对多个对象的位置进行调整。(5)Tab顺序编辑器(TabOrderEditor):通过该工具,设置当按下键盘上的Tab键时,对象被选中的先后顺序。
MATLAB的用户界面设计工具有:回调函数(callbackfunction)CloseRequestFcn-关闭窗口时响应函数KeyPressFcn-键盘按下时响应函数windowButtonDownFcn-鼠标按下时响应函数WindowButtonMotionFcn-鼠标移动时响应函数CreateFcn和DeleteFcn-建立和删除对象时响应函数CallBack-对象被选中时响应函数回调函数(callbackfunction)CloseRe例:示意小球碰撞过程出射角上挡板下挡板例:示意小球碰撞过程出射角上挡板下挡板在OpeningFcn中加入初始化语句h1=line([0,1],-0.09*[11]);set(h1,'linewidth',5);h2=line([0,1],1.09*[11]);set(h2,'linewidth',7);uu={[100],0.050.5};set(gcf,'userdata',uu);Tag=lstcolorTag=rdradio1Tag=rdradio2Tag=rdradio3在OpeningFcn中加入初始化语句Tag=lstcofunctionexec_bouncing(x)k=1;uu=get(gcf,'userdata');ifnargin==0,[x,y,k]=ginput(1);uu{3}=x;set(gcf,'userdata',uu);endifk==1ifx<0,x=0.1;endifx>1,x=1;endxx=[0];yy=[1];x0=0;x1=x;y1=1;while(x1<=1+x)xx=[xxx1];y1=~y1;yy=[yyy1];x0=x1;x1=x1+x;enddx=1/50;xx_l=[0:dx:1,xx];xx_l=sort(xx_l);yy_l=interp1(xx,yy,xx_l);h_mark=line([0],[1]);set(h_mark,'Marker','o','markersize',8,'color',‘r',...'tag','h_ball','linewidth',5);set(h_mark,'color',uu{1});fori=1:length(xx_l)x0=xx_l(i);y0=yy_l(i);set(h_mark,'xdata',x0,'ydata',...y0);pause(uu{2});endendfunctionexec_bouncing(x)set(hfunctionset_speed(key)uu=get(gcf,'userdata');switchkeycase1uu{2}=uu{2}*0.5;case2uu{2}=uu{2}*2;case3uu{2}=0.05;case4kk=get(findobj(gcf,'tag','lstcolor'),'value');switchkkcase1uu{1}=[100];case2uu{1}=[010];case3uu{1}=[001];endendifkey<=3hh=gco;h1=findobj(gcf,'tag','rdradio1');set(h1,'value',0);h2=findobj(gcf,'tag','rdradio2');set(h2,'value',0);h3=findobj(gcf,'tag','rdradio3');set(h3,'value',0);set(hh,'value',1);endset(gcf,'userdata',uu);exec_bouncing(uu{3});
functionset_speed(key)ifkey<作业5.2:
建立”数制转换”对话框,在左边输入一个十进制整数和2—16之间的数,单击“转换”按钮能在右边得到与十进制相对应的相应进制的字符串,单击“退出”按钮退出对话框。例如:输入 20和13得到17 12和13得到C 13和13得到10作业5.2:第九章图形界面编程
(GraphicalUserInterface,GUI)第九章图形界面编程一、常用对话框的设计
二、图形界面设计
三、可视化图形用户界面设计一、常用对话框的设计
二、图形界面设计
三、可视化图形用一、常用对话框的设计(1)创建对话框dialogh=dialog('PropertyName',ProperValue,...)
返回一个对话框句柄。该函数产生一个图形对象并为对话框设置推荐的图形属性。Note:该函数的属性是图形Figure的属性Example:h=dialog('Name','图形对话框','Position',...[240,240,200,50],'Color','r')一、常用对话框的设计(1)创建对话框dialogExamp(2)创建输入对话框inputdlganswer=inputdlg(prompt)answer=inputdlg(prompt,title)answer=inputdlg(prompt,title,lineNo)answer=inputdlg(prompt,title,lineNo,defAns)answer=inputdlg(prompt,title,lineNo,defAns,Resize)对应描述:prompt是一个包含提示字符串的数组。创建一个模式对话框并返回用户在数组中输入的内容title为对话框指定一个标题lineNo为用户的每个输入值指定输入的行数,可以是标量、列向量或矩阵。列向量为一个提示符指定输入的行数;矩阵是m*2矩阵,其中m是对话框中提示符的个数,矩阵的第一列为指定输入的行数;第二列指定字符的域宽。defAns指定每个提示符的默认值Resize说明对话框是否改变尺寸,取值'on'和'off'。(2)创建输入对话框inputdlg对应描述:prompt是
例ans=inputdlg('请输入题号(1-10),输入0退出','Matlabzuoye')例pp={'a=?','b=?'}ans=inputdlg(pp,'InputParam')matlab图形界面编程课件例inputdlg('AAAAAAA')inputdlg('AAAAAAA','inputdialog')inputdlg('AAAAAAA','inputdialog',2)inputdlg('AAAAAAA','inputdialog',1,{'OOOOOOOO'})inputdlg('AAAAAAA','inputdialog',1,{'OOOOOOOO'},'on')Cellarray例创建输入一个整数和色图名称的对话框,每行只允许输入一行。prompt={'EnterMatrixsize','Entercolomapname'};title='Inputdataforpeaksfunction';lines=1;def={'20','hsv'};answer=inputdlg(prompt,title,lines,def)例Cellarray例创建输入一个整数和色图名称的对话(3)创建消息对话框msgboxmsgbox(message)msgbox(message,title)msgbox(message,title,'icon')msgbox(message,title,'custom',iconData,iconCmap)msgbox(...,'createMode')h=msgbox(...)对应描述:产生一个消息对话框title为消息对话框指定标题Icon指定在消息对话框中显示哪一个图标.'icon'可以是'none'、'error'、'help'、'warn'、'custom'定义一个用户定制的图标。iconData包含着定义图标的图形数据;iconCmap是图形所用的色图指定消息框是否为模式化的,如果是非模式化的,是否要取代其它有同样标题的消息框。''createMode'取'modal'、'non-modal'和'replace'返回一个对话框的句柄h,它是一个图形对象的句柄。(3)创建消息对话框msgboxNote:消息对话中的消息自动换行来适应具有适当尺寸的图框。Message是一个字符串向量、字符串矩阵或数组。例
mess={'Inputdlghelp','Listdlghelp';'Msgboxhelp',...'Pagedlghelp'}msgbox(mess,'MyDialogHelp','help')mess='Inputdlghelp''Listdlghelp''Msgboxhelp''Pagedlghelp'Note:消息对话中的消息自动换行来适应具有适当尺寸的图框。(4)创建错误对话框errordlgerrord
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年度采购计划执行情况汇报确认函3篇
- 网络文化交流平台管理操作指南
- 传统技艺紧急保护承诺书3篇
- 企业成本控制五项策略实施手册
- 智能交通系统建设与运营管理研究
- 2022年船舶维修服务标准合同三篇
- 2026年保安临时聘用合同三篇
- 市场营销活动策划书效果评估模板
- 客户关系维护记录模板回访跟进综合版
- 卓越物流服务保证函(6篇)
- 2025-2026统编版二年级语文下册第四单元素养达标(A卷)(含答案)
- 2026年个人查摆问题及整改措施清单
- 新污染物治理培训课件
- 电力建设安全风险管控与隐患排查治理双重预防机制管理导则
- 设备巡检安全培训课件
- 【《基于STC单片机的智能防干烧电热水壶控制系统设计》9400字】
- 出境竹木草制品自检自控计划
- 2025年高考甘肃物化生试卷及答案
- 团播直播内容策划详细流程
- 校园食品安全和膳食经费管理自查情况报告
- 小升初六年级语法专项练习每日一练小纸条【空白完整版】
评论
0/150
提交评论