new第6讲MATLAB图形用户界面设计.ppt_第1页
new第6讲MATLAB图形用户界面设计.ppt_第2页
new第6讲MATLAB图形用户界面设计.ppt_第3页
new第6讲MATLAB图形用户界面设计.ppt_第4页
new第6讲MATLAB图形用户界面设计.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第5章图形用户界面编程,图形用户界面,所谓用户界面就是用户与计算机交互通信联系的平台。图形用户界面是指包含图形对象的用户界面,MATLAB包含两类基本的图形对象:控件对象和菜单对象。MATLAB提供了“布局编辑器”和“菜单编辑器”等工具设计图形用户界面。,5.1布局编辑器,MATLAB窗口的File菜单下选New下的GUI,或在MATLAB命令窗口输入guide。,图形对象,工具条:排列、菜单编辑、M文件编辑器、属性观察器、对象浏览器和图形激活钮。,布局区域,GUI制作:需求分析,要点:1)确定需要实现哪些功能;2)确定数据输入/输出方式;3)确定所需的窗口图形元素;4)绘制GUI草图;5)征求用户或他人的意见,并进行修改。,GUI制作:绘制并测试GUI,要点:1)在计算机上实现需求分析绘制的草图,并依据实际情况进行调整;2)从用户使用的角度对GUI进行调试。注:在完成设计与测试之前,不要编码,因为此时编写的代码可能会因设计的更改而失去意义。在GUI测试稳定后编写并测试代码。,GUI设计原则,简单性简洁、直接、清晰地体现出界面的功能和特征。风格一致性例如:图形窗口在左,图形控件在右等。易理解性尽量使用人们熟悉的标志和符号,界面中的动作必须做到及时、连续、可逆,对连续时间长的运算要给出等待时间提示,并允许用户中断等。,5.2控件对象,选择命令钮单选钮文本框滚动条列表框坐标轴,开关钮复选框标签框架弹出式菜单,控件对象属性:外观及风格控制,BackgrandColor:设置控件的背景色,可以是RGB颜色值,如110,也可以是短名颜色值,如y,还可以是长名颜色值,如yellow;Cdata:设置显示在控件上图象的颜色值;1行3列。(效果不理想)ForegroundColor:设置控件上显示文本的颜色;SelectHighlight:用于确定空间被选中时是否显示被选中的状态(取值:on、off);String:用于设置控件上显示的文本串;Visible:设置控件的可见状态。,控件对象属性:基本信息属性,Enable:可用状态on;暂停不用状态inactive;不可用状态:off;Parent:控件对象的父对象句柄所在图形窗口对象句柄;Selected:用于确定控件是否被选中;Sliderstep:用于设置滚动条每次移动的步长;Style:用于决定所创建控件的类型;Tag:相当于控件对象的名称,在程序设计时可用来指定控件;TooltipString:设置简单提示信息;UserData:保存与控件对象有关的信息或数据,可通过set和get函数来调用这些信息。,控件对象属性:字体控制属性,FontAngle:用于确定字体的倾斜;FontName:设置字体的名称;FontSize:设置字体的大小;FontUnits:确定字体大小的单位;FontWeight:定义字体的粗细;HorizontalAlignment:定义字符对齐方式。,控件对象属性:回调例程控制,ButtonDownFcn:定义当鼠标在控件对象上按下时执行的回调例程,可以是字符串、MATLAB表达式或M文件的文件名;Callback:定义单击控件时执行的回调例程;CreateFcn:定义在控件对象创建阶段执行的回调例程;DeleteFcn:定义在控件对象删除阶段执行的回调例程;BusyAction:决定回调例程的调用方式,取值有cancel与queue,与Interruptible联合使用;Interruptible:决定回调例程的中断调用模式,如为on则新的回调例程中断当前正在执行的回调例程,如为off则由BusyAction决定调用模式;UIContextMenu:建立与上下文菜单(contextmenu)对象的联系,其属性的取值为菜单对象句柄。,控件对象属性:当前状态信息属性,ListboxTop:用于显示在列表框最上头的字符串的索引号,默认值为1;是String属性定义的字符串向量的某个元素的索引值。Value:决定空间的当前值;对弹出式菜单控件pop_upmenus,该属性为已选中的列表项的索引值。,控件对象属性:当前状态信息属性Max,Max:定义Value属性允许的最大值。在不同的控件类型中,Max有不同的意义:复选框:选中时Value属性的值为Max的值;文本框:Max-Min1则可进行多行输入;列表框:Max-Min1则可允许多个列表项选择;单选钮:选中时Value属性的值为Max的值;滚动条:定义了滚动条变化范围的最大值;开关钮:选中时Value属性的值为Max的值。,控件对象属性:当前状态信息属性Min,Min:定义了Value属性允许的最小值。复选框:未选中时Value属性的值为Min的值;单选钮:未选中时Value属性的值为Min的值;滚动条:定义了滚动条变化范围的最小值;开关钮:未选中时Value属性的值为Min的值。,控件对象属性的操作方式和步骤,命令方式:利用uicontrol建立控件对象时,定义控件属性的属性值;利用set设置、修改属性的属性值;利用get获得属性的属性值。GUI方式:通过PropertyInspectorGUI设计工具设置控件对象的属性值。程序中控件对象的一般操作步骤:1)获取对象句柄;2)对对象属性进行操作。,MATLAB句柄图形,句柄图形:MATLAB每幅图的每个组成部分是一个对象,每个对象有一个句柄与其相联。MATLAB句柄图体系如下:,图形句柄,在MATLAB中,每个图形对象都由一个数字来表识,称为句柄,用来唯一确定图形对象。计算机屏幕:根对象(Root),句柄为0;图形窗口:句柄为整数;其它:句柄为浮点值。,图形对象句柄的获取,每个对象在创建时可以返回该对象的句柄。例如:h=plot(0:.1:2*pi,sin(0:.1:2*pi);利用标准对象句柄获取函数获取:gcf:获取当前图形窗口的句柄;gca:获取当前坐标轴的句柄;gco:获取当前图形的当前对象的句柄;gcbf/gcba/gcbo:获取回调例程图形窗口/坐标轴/当前对象的句柄。,图形对象句柄的获取findobj,h=findobj(Propertyname,propertyValue,):获得指定属性Propertyname的属性值为propertyValue对应对象的句柄。h=findobj(objHandle,Propertyname,propertyValue,):同上,但将查找范围限制在objHandle指定的对象及其子对象中。h=findobj(objHandle,flat,Propertyname,propertyValue,):同上,但将查找范围不包括子对象。h=findobj:返回一个列向量,是根对象及其所有子对象的句柄值。,图形对象句柄的获取举例,%-Executesonbuttonpressinpushbutton1.functionpushbutton1_Callback(hObject,eventdata,handles)h=findobj(Tag,axes1);x=-pi:0.1:pi;y=sin(x);plot(x,y,Parent,h);,%-Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)h=findobj(Tag,axes2);x=-pi:0.1:pi;y=cos(x);plot(x,y,Parent,h);,对象及属性的操作:删除和拷贝,delete(handle):删除句柄handle对应对象及其子对象;c=copyobj(h,p):复制对象句柄,c为新得到的句柄。如果h和p均为向量,则将h对应的句柄分别作为p各对应对象的子对象的句柄;如果h为向量,p为标量,则将h对应的句柄作为p对应对象的子对象的句柄;如果h为标量,p为向量,则将h对应的句柄分别作为p对应对象的子对象的句柄。,对象及属性的操作copyobj举例,mesh(peaks(30);text(30,20,2,leftarrowpeak);h=findobj(String,leftarrowpeak);figuremesh(peaks(20);ha=copyobj(h,gca);,对象及属性的操作:创建、设置和获取,h=uicontrol(parent,PropertyName,propertyValue,)缺省parent表示在当前图形窗口创建控件对象。set(handle,PropertyName,propertyValue,)用来设置句柄为handle的控件对象的属性值。get(handle,PropertyName)返回句柄为handle的对象中名为PropertyName的属性的属性值。,对象及属性的操作举例,x=0:.1:2*pi;y=sin(x);h_sin=plot(x,y,*);lineWidth=get(h_sin,LineWidth);set(h_sin,Color,10.50,LineWidth,lineWidth+4);hpop=uicontrol(Style,popup,String,Black|Green|Blue|Red,.Position,340190100150,Callback,setmap,.Tag,popup);,setmap.m文件中的内容:hp=findobj(Tag,popup);val=get(hp,Value);ifval=1set(gca,Color,0,0,0);elseifval=2set(gca,Color,010);elseifval=3set(gca,Color,001);elseifval=4set(gca,Color,100);end,5.3菜单对象和上下文菜单,在MATLAB中有两类菜单:下拉式菜单uimenu和上下文菜单uicontextmenu。下拉式菜单(菜单对象)的位置是固定的。上下文菜单的位置是不固定的,且总与某个图形对象相联系,通过鼠标右键激活,同时下拉式菜单可为其中的菜单项。,菜单对象的创建,hm=uimenu(h,PropertyName,value,)以h为父对象的句柄创建一个菜单对象,并返回该菜单的句柄。例如:,h0=figure(MenuBar,none,Toolbar,none,Name,DrawGraph);h1=uimenu(h0,Label,Checked,上下文菜单创建,h=uicontextmenu(PropertyName,propertyValue,)一般步骤:1)利用uincontextmenu创建上下文菜单对象;2)利用uimenu制作菜单项;3)利用set将上下文菜单与具体的图形对象联系起来。,上下文菜单创建举例,cmenu=uicontextmenu;hline=plot(1:10,UIContextMenu,cmenu);item1=uimenu(cmenu,Label,dashed,.Callback,set(hline,LineStyle,-);item2=uimenu(cmenu,Label,dotted,.Callback,set(hline,LineStyle,:);item1=uimenu(cmenu,Label,Solid,.Callback,set(hline,LineStyle,-);,利用菜单编辑器制作菜单,菜单属性,在菜单编辑器的右边有少量有关菜单属性值的设置。Checked:对选中的菜单打标记(对顶层菜单无用);Label:设置菜单标题;Separator:用于在菜单上设置分隔条;Visible:设置菜单的可见状态;Accelerator:用于设置菜单加速键;Callback:定义单击菜单对象时执行的回调例程;Tag:标记菜单项的名称,便于在程序设计时通过该名称指定菜单项。,5.4对话框,在GUI程序设计中,对话框是最重要的显示信息和取得用户数据的用户界面对象。MATLAB的对话框分为两类:公共对话框和一般对话框。公共对话框:文件打开对话框、文件保存对话框、颜色设置对话框、字体设置对话框、打印页面对话框、打印预览对话框和打印对话框。一般对话框:帮助对话框、出错信息对话框、信息提示对话框等。,文件打开对话框,fname,pname=uigetfile(FilterSpec,DialogTitle,x,y)获取待打开文件的文件名fname及路径信息pname。FilterSpec指定文件类型;DialogTitle指定对话框标题名;x,y指定对话框位置信息。uigetfile并未打开有关文件。MATLAB提供了基于C语言实现的低级文件I/O函数。,fn,pn=uigetfile(*.m,OpenMFile,10,10);fnfn=sample1.mpnpn=C:MATLAB6p5work,打开、关闭文件,fid,errormessage=fopen(filename,permission);使用permission指定的模式打开filename指定的文件,成功时返回文件标识,否则返回系统错误信息errormessage.permission的取值及含义:r:只读模式;w:写模式(含创建);a:添加;r+:读写;w+:读写(含创建);a+:添加(含创建)。status=fclose(fid):关闭fid指定的文件,操作成功时返回0,否则返回1。,无格式输入/输出,a,count=fread(fid,size,precision,skip):从指定文件fid中读取size个单位长度为precision的数据元素至a中,skip表示每次读后跳过的字节数。count表示实际读入的数据个数。size取值含义:标量n(读取n个元素);inf(读到文件结尾);m,n(读取m*n个元素)。precision:uchar(8位无符号字符缺省值);schar(8位带符号字符);int8(8位带符号整数);uint8(8位无符号整数);single(32位浮点数);double(64位浮点数)。count=fwrite(fid,a,precision,skip):将a中数据转换成precision指定的数据元素写入fid指定的文件中,count为成功写入的元素数目。,格式化输入/输出,count=fprintf(fid,format,a,):将a中数据用format格式化后写入文件fid中,count为写入的字节数。fid缺省表示向显示屏输出。例如:x=0:.2:2;y=x;2*exp(x);fid=fopen(data.txt,w);fprintf(fid,%6.2f%12.8fn,y);fclose(fid);a,count=fscanf(fid,format,size):从fid指定文件中读取size指定的数据,并根据format指定的格式对其转换后返回a,count为读取的元素数目。,按行从文件读数据,line=fgetl(fid):从文件fid中读1行数据至line,返回的行不包括换行符。遇到文件结尾则返回-1。line=fgets(fid):从文件fid中读1行数据至line,返回的行包括换行符。遇到文件结尾则返回-1。,文件测试,eofstat=feof(fid):文件结尾返回-1,否则返回0。frewind(fid):将文件位置指针反绕到文件开头。status=fseek(fid,offset,origin):将文件的位置指针定位到origin偏移offset指定的位置。Origin的取值为bof或-1文件开始cof或0文件当前位置eof或1文件结束position=ftell(fid):返回位置指针指向的位置,失败时返回-1。,文件保存对话框,fname,pname=uinputfile(Initfile,DialogTitle,x,y):Initfile为指定待保存文件类型,DialogTitle为对话框标题,x和y为对话框位置。例如:uiputfile(*.m,Save)ans=kk,颜色设置对话框,c=uisetcolor(h_or_c,DialogTitle):h_or_c为初始颜色,可以是一个1X3的RGB向量,也可以是一个图形对象的句柄(该图形对象必有一个颜色属性)。,c=uisetcolor(101,SelectColor)c=0.251000.2510,字体设置对话框,s=uisetfont(h_or_s,DialogTitle):h_or_s为初始字体属性,可以是一个对象的句柄,也可以是一个字体属性结构;s为字体属性结构,包括(FontName,FontUnits,FontSize,FontWeight,FontAngle等域)。,Text1=uicontrol(style,text,string,XxYyZz);Text2=uicontrol(style,text,string,AxBbCc,.position,200206020);s=uisetfont(Text1,UpdateFont);ifisstruct(s)%Checkforcancelset(Text2,s);end,帮助对话框,h=helpdlg(HelpString,dlgname):HelpString为帮助信息;dlgname为对话框标题。例如:,helpdlg(Thisisadialogue!,Help),在线帮助窗口helpwin(补),str=Topic1,Helpstringfortopic1;Topic2Helpstringfortopic2;helpwin(str,Topic2,MyTitle),信息提示对话框,h=msgbox(message,title,icon):icon的取值为:none,error,help和custom,默认为none。,Data=1:64;Data=(Data*Data)/64;h=msgbox(String,Title,custom,Data,hsv(64);,5.5GUI编程,设计一个如下所示的GUI,当单击“绘图”按钮时,将在坐标轴上绘制选择的图形。,Figure的Name属性值为GUI例子程序,坐标轴的Tag属性值为axes1,标签的String属性的值为图形选择,单选钮的string属性值为正弦曲线,Tag属性值为sin,单选钮的string属性值为余弦曲线,Tag属性值为cos,Value属性值为1.0,命令钮的string属性值为绘图,Tag属性值为draw,保存时文件名为fgui,fgui.m程序说明:gui_State,%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct(gui_Name,mfilename,.gui_Singleton,gui_Singleton,.gui_OpeningFcn,fgui_OpeningFcn,.gui_OutputFcn,fgui_OutputFcn,.gui_LayoutFcn,.gui_Callback,);ifnarginend,ifnargoutvarargout1:nargout=gui_mainfcn(gui_State,varargin:);elsegui_mainfcn(gui_State,varargin:);end%Endinitializationcode-DONOTEDIT,gui_Singleton大于0表示只有一个实例化的图形窗口存在;gui_Name图形窗口对应文件名;,gui_OpeningFcn窗口创建前执行的函数;gui_OutputFcn输出时执行的函数;gui_Callback确定控件的回调函数;gui_mainfcn调用分派函数。,fgui.m程序说明:fgui_OpeningFcn,%-Executesjustbeforefguiismadevisible.functionfgui_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstofgui(seeVARARGIN)%Choosedefaultcommandlineoutputforfguihandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesfguiwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);,guidata:存储或检索应用数据。,fgui.m程序说明:fgui_OutputFcn,%-Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=fgui_OutputFcn(hObject,eventdata,handles)%varargo

温馨提示

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

评论

0/150

提交评论