Matlab-GUI图形界面设计_第1页
Matlab-GUI图形界面设计_第2页
Matlab-GUI图形界面设计_第3页
Matlab-GUI图形界面设计_第4页
Matlab-GUI图形界面设计_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章MATLAB高级图形设计

6.1句柄图形对象6.2图形用户界面〔GUI〕6.3对话框6.4图像和声音6.5视频与动画设计6.1句柄图形对象6.1.1句柄图形对象体系句柄〔Handle〕是每个图形对象唯一的标识,不同对象的句柄不能重复,通过句柄可以对图形对象的属性进行操作。Root根屏幕Figure图形UIObjects用户接口对象CoreObjects核心对象PlotObjects绘图对象GroupObjects组对象AnnotationObjects注释对象图像Axes轴Uibuttongroup按钮组Uicontrol控件对象Uicontextmenu上下文菜单Uimenu菜单图像Uipanel面板Uitoolbar工具栏6.1.2句柄图形对象的操作1.创立句柄图形对象h_obj=funname('PropertyName',PropertyValue,……)h_obj是图形对象的句柄;funname是函数名,每个创立的图形对象函数名与对象名相同;'PropertyName'是属性名,属性名是字符串;PropertyValue是属性值。例:>>h_f=figure('Position',[200300500400])%创立图形窗>>h_a1=axes('position',[0.1,0.05,.85,.85])%创立坐标轴例6-1:Ex6_1.m2.访问句柄图形对象〔1〕获取当前图形对象的句柄gcf %获取当前图形窗口的句柄gca %获取当前窗口当前坐标轴的句柄gco %获取当前窗口当前对象的句柄说明:返回值都是句柄,gco的当前对象句柄是指被鼠标最近点击过的对象。〔2〕查找对象句柄h=findobj(h_obj,'PropertyName',PropertyValue) %查找符合指定属性值的对象句柄3.句柄图形对象属性的获取和设置a=get(h_obj,'PropertyName')%获取图形对象的属性值a=set(h_obj,'PropertyName',PropertyValue,...)%设置图形对象的属性值练习例6-2使用句柄图形对象绘制正弦曲线〔ex6_2.m〕。>>x=0:0.1:10;>>y=sin(x);%创立无标题窗口>>h_f=figure('Position',[200300300300],'menubar','none');>>h_a1=axes('position',[0.1,0.1,.8,.8]);>>h_t=title(h_a1,'正弦曲线'); %创立标题>>h_l=line(x,y);%建立曲线对象>>set(gca,‘xtick’,[0pi/2pi3*pi/22*pi5*pi/23*pi])%设置x坐标轴刻度%设置坐标轴刻度标注>>set(gca,'xticklabel',{'0','pi/2','pi','3*pi/2','2pi','5*pi/2','3pi'})>>set(gca,'xgrid','on','ygrid','on'); %设置坐标轴属性>>set(h_l,'linewidth',2) %设置线属性>>set(get(h_t,'parent'),'color','y') %设置标题的父对象属性%创立矩形框>>h_ann0=annotation(gcf,'rectangle',[0.10.5.80.4],...'FaceAlpha',.7,'FaceColor','red');补充where_mathsworks.m4.句柄图形对象的复制和删除〔1〕句柄图形对象的复制new_handle=copyobj(h_obj,p)%复制图形对象h_obj〔2〕删除句柄图形对象delete(h_obj) %删除图形对象〔3〕删除所有的句柄对象clf(h_figure) %删除h_figure窗口中的所有可见对象cla(h_axes) %删除h_axes坐标轴中的所有可见对象6.2图形用户界面〔GUI〕MATLAB的图形用户界面提供了包含按钮、文本框、标签等一系列交互控件,用户可以通过鼠标和键盘进行交互操作。M文件编辑器运行控件面板对象浏览器界面设计区属性编辑器菜单编辑器对象对齐工具Tab顺序编辑器6.2.1图形用户界面概述在MATLAB主界面选择菜单“File”→“New”→“GUI”,或直接在命令窗口输入“Guide”命令都可以翻开GUIDE快速开始界面。6.2.2设计一个简单的GUI界面1.设计一个GUI界面的步骤〔1〕界面布局设计界面布局设计包括以下几个步骤:通过拖拽控件面板中的控件到界面设计区中;然后使用对象对齐工具〔AlignObjects〕进行控件的布局调整,使用Tab顺序编辑器〔TabOrderEditor〕对各控件的Tab顺序进行较好地设置;如果界面需要菜单,那么使用菜单编辑器〔MenuEditor〕进行菜单的设计;添加完控件后在对象浏览器〔ObjectBrowser〕中就可以看到所有的图形对象,完成界面的布局设计。〔2〕属性设置翻开属性编辑器〔PropertyInspector〕对相关的属性进行修改。〔3〕编写回调函数2.一个简单的图形用户界面设计实例例6-3创立一个用户界面,实现单击按钮在坐标轴中绘制正弦曲线的功能,运行界面如图6-6所示(simplegui.m/simplegui.fig)。〔1〕创立一个空白的GUI界面〔2〕创立控件〔3〕调整控件布局〔4〕设置各控件的Tab顺序〔5〕设置控件的属性〔6〕编写回调函数〔7〕运行GUI界面程序3.GUI开发环境的常用工具(1)控件面板按钮’pushbutton’其上的字符说明其作用静态文本’statictext’一般用来作为信息提示用文本框’edittext’读取用户数据的文字窗口面板‘panel’概括一组控件,也可以修饰用列表框‘listbox’包含多个选项供用户选择滚动条’slider’图示某个范围切换按钮’togglebutton’两状态按钮,单击改变其状态。单项选择按钮’radiobutton’一组选项,其中只能有一个被选中。复选框’checkbox’一组选项,可以选择多项。下拉菜单’popupmenu’选中时翻开一个列表(2)对象对齐工具(3)对象浏览器(4)Tab顺序编辑器(5)属性编辑器窗口(6)菜单编辑器(7)M文件编辑器6.2.3回调函数和GUI程序文件1.回调函数控件接收到用户的操作时调用的特定函数。一旦某一对象指定的事件发生,将自动调用某指定的函数,它可以是matlab文件,也可以是一组matlab程序。(1)回调函数的类型每种控件根据控件功能的不同回调函数类型也不同。CloseRequestFcn-关闭窗口时响应函数KeyPressFcn-键盘按下时响应函数windowButtonDownFcn-鼠标按下时响应函数WindowButtonMotionFcn-鼠标移动时响应函数CreateFcn和DeleteFcn-建立和删除对象时响应函数CallBack-对象被选中时响应函数补充实例〔my_callbackf.m〕:建立一个图形窗口。该图形窗口没有菜单条,标题名称为“我的图形窗口”,起始于屏幕左下角、宽度和高度分别为450像素点和260像素点,背景颜色为绿色,且当用户从键盘按下任意一个键时,将在该图形窗口绘制出正弦曲线,点击鼠标时绘制余弦曲线。hf=figure('Color',[0,1,0],'Position',[1,1,450,260],...'Name','我的图形窗口','NumberTitle','on','MenuBar','none',...'KeyPressFcn','plot(sin(0:0.01:2*pi))','WindowButtonDownFcn','plot(cos(0:0.1:2*pi),''r*'')');

(2)回调函数的自动命名GUIDE根据控件的Tag属性确定了回调函数的名称(3)回调函数的输入参数回调函数的输入参数也是由GUIDE自动确定的,常用的有hObject、eventdata和handles。functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(当前回调函数的图形对象句柄〕%eventdatareserved-tobedefinedinafutureversionofMATLAB〔预留输入参数〕%handlesstructurewithhandlesanduserdata(存放图形窗口中所有图形对象句柄的结构体,存储了界面中所有控件菜单等的句柄,可以在函数之间传递数据)例:在pushbutton1_callback回调函数中获取axes1的属性:P=get(handles.axes1,’position’);%获取axes1的位置属性2.GUI程序文件(1).fig文件保存GUI界面(2).m文件保存GUI程序代码m文件结构:主函数:注释说明和窗口的初始化程序functionvarargout=simplegui(varargin)子函数OpeningFcn翻开窗口时的初始化程序OutputFcn函数是窗口的输出子函数,定义输出到命令窗口的变量其他的子函数是各控件的回调函数6.2.4按钮、滚动条和文本框控件1.控件的通用属性〔1〕Tag属性图形对象的标识,是所有图形对象最重要的属性,对象的回调函数名自动以Tag属性命名〔2〕String属性界面中的标签文字〔3〕Style属性控件的类型〔4〕Visible属性可见on/不可见off〔6〕Enable属性有效on/无效off/不活动inactive〔5〕Fontsize属性2.按钮〔PushButton〕和切换按钮〔ToggleButton〕按钮主要用于响应鼠标的单击事件切换按钮两次鼠标单击响应不同状态按钮和切换按钮的常用属性都有Tag、string和value:value为1表示被单击,为0那么未被单击;按钮默认的Tag属性为pushbutton1,切换按钮为togglebutton1。当用户单击按钮或切换按钮调用callback回调函数;string属性是按钮上显示的文字,默认的string属性与Tag相同。3.滚动条〔Slider〕用来输入一定范围内的数值〔1〕常用属性常用属性有value、max、min和SliderStep。〔2〕回调函数滚动条的常用回调函数是callback,当每次单击滚动条改变当前值时调用该函数。4.静态文本框〔StaticText〕和文本框〔EditText〕静态文本框用来显示文本,不能接收用户输入,用于文字说明;文本框可以显示文本,还可以接收用户输入静态文本框和文本框的常用属性都有string和字体属性。静态文本框没有callback回调函数,一般不接收用户操作;而文本框有callback回调函数,当修改了文本框内容后可以调用。练习例6-4〔example6_4.fig/.m〕创立一个用户界面,通过滚动条输入比例系数,使用文本框显示滚动条的当前值,单击按钮在静态文本框中显示传递函数。6.2.5单项选择按钮、复选框和面板1.单项选择按钮〔RadioButton〕和复选框〔CheckBox〕用于用户输入参数单项选择按钮和复选框都有value、string和enable属性,value属性为1时表示被选中;string属性为显示的文本;enable属性为on表示控件有效,无效控件显示为灰色。2.面板〔Panel〕和按钮组〔ButtonGroup〕面板和按钮组都是容器控件,将一组按钮、复选框等控件组织起来,便于布局按钮组对于一组单项选择按钮和切换按钮,每次点击只能选中一个按钮或切换按钮练习例6-5创立一个用户界面,使用单项选择按钮选择正弦函数的幅值,使用复选框输入正弦函数的时间范围,正弦函数的行向量在文本框中显示运行界面。(example6_5.m/fig)6.2.6下拉菜单、列表框、坐标轴和ActiveX控件1.下拉菜单〔Pop-UpMenu〕和列表框〔ListBox〕都是在下拉列表框中选择输入的,下拉菜单类似一组单项选择按钮,而列表框类似一组复选框。下拉菜单和列表框的常用属性都有string和value:string属性是所有的下拉列表项,可以在属性编辑器中输入,在程序代码中输入多个列表项时使用“|”分隔;value属性是当前所选项的序号,如果选择第一项,那么value=1。2.坐标轴〔Axes〕坐标轴是输出图形的区域,plot命令那么是创立坐标轴并将图形输出到坐标轴中,可以使用title、xlabel、ylabel、zlabel和text函数在坐标轴中添加文本。坐标轴的默认Tag属性是axes1。例6-6创立一个用户界面,使用列表框输入二阶系统的阻尼系数,在两个坐标轴中分别绘制阶跃响应曲线和脉冲响应曲线(example66.m/.fig)3.ActiveX控件ActiveX控件是使用其他应用程序的控件6.2.7菜单的设计1.菜单编辑器在可视化界面环境中选择菜单“Tools”→“MenuEditor…”或单击工具栏按钮,就会出现菜单编辑器窗口,其中“MenuBar”是普通菜单设计面板。a)普通菜单设计面板b)弹出式菜单设计面板2.回调函数每个菜单项都有callback回调函数,functionnew_Callback(hObject,eventdata,handles)3.使用句柄对象创立菜单h_menu=uimenu(h_Parent,'PropertyName',ProperValue,…) %创立菜单说明:h_Parent是菜单的父对象,如果是窗体,那么在窗体创立新菜单,如果是菜单那么创立该菜单的子菜单。补充实例(caidan.m):建立一个菜单系统菜单条中含有File和Help两个菜单项。如果选择File中的New选项,那么将显示NewItem字样,如果选择File中的Open选项,那么将显示出OpenItem字样。File中的Save菜单项初始时处于禁选状态,在选择Help选项之后将此菜单项恢复成可选状态,如果选择File中的SaveAs选项,那么将显示SaveAsItem字样。如果选择File中的Exit选项,那么将关闭当前窗口。如果选择Help中About…选项,那么将显示HelpItem字样,并将Save菜单设置成可选状态。程序如下: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','&File');hhelp=uimenu(hf,'label','&Help');uimenu(hfile,'label','&New','call','disp(''NewItem'')');uimenu(hfile,'label','&Open','call','disp(''OpenItem'')');hsave=uimenu(hfile,'label','&Save','Enable','off');uimenu(hfile,'label','Save&As','call','disp(''SaveAsItem'')');uimenu(hfile,'label','&Exit','separator','on','call','close(hf)');uimenu(hhelp,'label','About...','call',...['disp(''HelpItem'');','set(hsave,''Enable'',''on'')']);6.3对话框6.3.1输入框输入框为用户的输入信息提供了界面,使用inputdlg函数创立,并提供了“Ok”和“Cancel”两个按钮,inputdlg函数的命令格式如下:answer=inputdlg(prompt,title,lineno,defans,addopts) %创立输入框例(ex6_7.m):prompt={‘请输入正弦函数的频率’};%提示defans={'10'};w=inputdlg(prompt,'输入',1,defans)6.3.2输出框1.输出消息框输出消息框用来显示各种输出信息,使用msgbox函数来创立,只有一个“Ok”按钮,并利用图标表示不同的信息类型,msgbox函数的命令格式如下:h=msgbox(message,title,icon,icondata,iconcmap,createmode) %创立输出消息框例(ex6_8.m):message='输入参数超出范围';icon='error';h=msgbox(message,'出错',icon)练习2.专用输出框warndlgerrordlghelpdlgquestdlglistdlg补充实例〔ex6_91.m〕h=warndlg({'error:','code1111.'},'Warning')h=errordlg({'error:','code1111.'},'Error')h=helpdlg({'帮助信息:','帮助信息对话框和警告错误对话框根本一致,只是图标不同!'},'帮助')6.3.3文件管理框1.翻开和保存文件利用uigetfile函数显示翻开文件对话框;uiputfile函数显示保存文件对话框[fname,pname]=uigetfile(ffilter,strtitle,x,y)ffilter为文件名过滤器;strtiltle为对话框窗口标题栏的显示内容;x、y为对话框出现的位置,省略那么采用默认位置。返回文件名字和路径例:[f,p]=uigetfile('*.m;*.txt','请选择一个文件')f=fileprint.mp=E:\MATLABR11\work\2.浏览文件夹uigetdir函数可以浏览文件夹例:dirname=uigetdir('C:\MATLAB701')6.4图像和声音6.4.1图像MATLAB7.3的图像处理工具箱可以读入、显示和处理多种标准的图像格式文件,包括.bmp、.gif、.jpg、.tif、.png、.hdf、.pcx、.xwd、.ico和.cur等。1.图像类型〔1〕索引图像〔2〕灰度〔强度〕图像〔3〕RGB〔真彩〕图像2.图像处理函数〔1〕图像文件的信息图像文件可以使用imfinfo函数查询其信息,包括文件名、文件大小、图像尺寸、图像类型和每个像素的位数等信息。例:s1=imfinfo('nxq.jpg')〔2〕图像的读写[x,map]=imread(filename,fmt) %读取图像文件imwrite(x,map,filename,fmt) %写入图像文件说明:x是图像文件的数据矩阵;map是颜色表矩阵,可省略,当imread读取的不是索引图像时那么为[],当imwrite写入的不是索引图像,map省略;filename是图像文件名;fmt是文件格式,如'bmp'、'cur'、'gif'、'jpg'或'ico'等,可省略。〔3〕图像的显示h=imshow(x,[lowhigh]) %按颜色表设定显示灰度图像h=imshow(x,map) %显示图像h=imshow(filename) %显示图像文件例:图像的读入显示〔myimage.m〕例:做一个花瓶,如图示。〔提示:做一个旋转体外表,调入一幅图像对该外表进行彩绘,即用图像的色图索引作为外表体的色图索引〕huaping.m6.4.2声音1.读取和写入声音文件数据MATLAB7.3提供了auread和wavread函数分别读取.au和.wav声音文件的数据,auwrite和wavwrite函数将声音数据写入文件,aufinfo和wavfinfo函数用来获取.au和.wav文件的信息。2.播放声音文件sound和soundsc函数实现将向量转换为音频信号,并转换到speaker进行的播放;audioplayer创立一个音频播放器对象,用来播放声音信号;beep实现响铃。例6-13(mysound.m)6.5视频与动画设计

6.5.1视频MATLAB7.3的视频帧称为MATLABMovie,是结构体类型,包括cdata和colormap两个域,分别用来存放图像数据和颜色表,通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论