学习好资料 欢迎下载matlab GUI学习笔记matlab在创建每一个图形对象时,都为该对象分配唯一的值,称其为图形对象句柄(handle)句柄是图形对象唯一标识符,不同对象的句柄不能重复和混淆计算机屏幕作为根对象(root)由系统自动建立,其句柄值为 0,而图形窗口对象(Figure) 的句柄值为一正整数,并显示在该窗口的标题栏其他图形对象的句柄为浮点数通过句柄可实现对对象的各种控制和设置图形对象的属性是一些特殊值,可以对图形对象进行控制和设置, 由属性名和属性值组 成,属性名通常是采用大小写字母组成的字符串, 首字母大写用户在创建图形时可以对属性值设置,否则为系统默认值通常在创建图形对象后,通过句柄对属性值进行修改,利用函数 get()获取图形对象的属性值,通过set()设置属性值15.2.1创建图形对象除根对象外,每一种图形对象都有一个相对应的创建函数 在MATLAB中,图形对象的创建函数,如表15.1所示口 例如,采用函数figure()创建figure对象,函数axes()创哀15.1用也对象的创建函裁*的扣root/根对象•figure*:图形百口axei-坐标轴,]image*图酎的川灯光,线条2抉*Rdangje-矩形,suffice^曲即怔1口文着获取对象的属性值 get():v=get(h):该函数获取句柄h的所有属性值<.v=get(hf TropertyName1):该函数获取句柄h的指定的属 性团》v=get(0P Factory):该函数获取根对象(root)的所有出 「属性值,v=get(h1 该函数获取旬柄h的所有默认属性值耳set(0,defaultFigureColor,[1 1 1])设置图形 figure 界面的颜色;图形对象的基本操作152获取当前回报近象的由曲函如珊 1gcfr1衣取自前图和窗口的句柄,gca*次取当前留柩窗口中的生封轴的句柄gCQ“押送前图府口中通对象的句柄屋gcbfu蕊取正在执行的回现程序对应的对象所宿口的句柄炉gcbo*获取正在执行的醐程序对应炳最句杯一 一:表15 3 对象的液常用作函数/说明p |res*t^1对象的复位,恢复为默认值门 |findobj*对象的画我一 |findalb查投所有奸狼,包括隐藏的对数1copyobj*对族的复制口delete*又打艮的*炉dlchild*5查找所有的子对象2ancestor^查找对强的匆速声 1>> set (h, res ize1,0ff )>> reset(gcf)>> get (h, fes )an扫=on形窗口也称为figure对像.图形窗口的句柄值为正整数也 在MATLAB中,采用函数figure()来创建图形窗口口在MATLAB中,利用函数figure(h)创建句柄为h的图形窗口后,可以采用get(h)获取该图形句柄的所有属性信口采用函数elf清空当前图形窗口。
该函数的悯用格式为:elf:该函数清除当前figure中的所有不隐藏的对象elffresef):该函数清除当前figure的所有对象,并对 figure的属性复位为系统的默认值.clf(figh该函数清除窗口fig中所有不隐藏的对象口clf(figr reset):该函数清除窗口fig中所有不隐藏的对象. 井复位为系统的默认值.close (gcf)关闭当前窗口;在MATLAB中,采用函数axes])创建坐标轴对象,该函数 的调用格式为)axes:该函数在当前的figure内创建坐标轴对象,采用系统 的默认值.axes(position\ RECT):该函数设置坐标轴的位置为 RECT, RECT为4维向量,指定坐标轴的尺寸和位置, 格式为। [left, bottom, width, height],即[左,底,宽 ,高],以屏幕的左下角为原点axes(h);当句柄为h的坐标轴对象存在时,将其设置为当前 对象.如果句柄为h的坐标轴对象不存在-则创建句柄为 h的坐标轴对象,并设置为当前的对象.h=ax*{…卜该函数返回坐标轴对象的句柄h在MATLAB中,核心图形包括:图像(image) ■线条(line)、文本(text)、光照(light)、块(patch)、矩形(rectangle)和曲面(surface)。
下面对常用的images Une和text进行介绍-对于light、patch.rectang卜e和surface用户可以通过MATLAB的帮助进行查看.在MATLAB中,利用函数image()创建图像对象,该忸数的低级调用格式为:h=image(4P1NameTT PIValue, iP2Name\ P2Value,…)imge对象的主要属性为 CData和Visible” CDae属性保存了image的图像数据, Visible属性设置图像是否显示口 Qclear all;close all;AsimreadffootbalLtif/tif);A=im2double在MATLAB中, uicontrol为用户接口控制对象*利用函数 uiconlrol可以创建的常见的按钮.静态文本和滑动条等等 函数uicontrol可以创建的对象类型,如表15.4所示a 15458Mro富建的对象类checkbox*火明二复选隹,Check boxes*edit*,百!II福文本・ Editable text dtldrframeFinnedlistbox^列表CL List boxs*poptpmenu弹出式菜单* menus^pg 短Ut3 * PuihbuiErH,radiobunon*单送桢田, Radi。
buttons*dider-1看动桑,Slidm-1test*峥态文本, StttictextlabcbPtdggjfbutioii4切楂接扭,Toggle buttons*利用函数uicontrol()建立按锐r单击该按钮后,清除figure中 的图形.h=figure;t--pi:pi/20:pi;plot(t.sin(t));[ %绘制正弦曲线grid on;h=iiicontrol(Style,push button; String」清除 r,,,・Position1,[320 60 30 30],CaHback*cla);在MATLAB中,利用函数uimenu()创建自定义菜单.和菜电 选项,该函数的调用格式为:uimenufPIName; P1V小ue,…):该函数设置菜单的属性 P1 Name 的值为 P1 Value”uimenu(h,…人 该函数以h为父对象创建菜单.h=uimenu(..t)3该函数返回菜单的句柄h口利用函数uirnenu()创建菜单,并设置快捷键,代码如下.clear all; close all;t=O:pi/ZO:2 M pi;figurefmenubaf/none^; %仓”建图 形窗口h1=plot(tTsin(t)J;set{gca「xlim>[O 2*pi]);112=1|[|箕。
11{1所11,颜色设置,); %创建菜单iHmonu(h2,Label、红色「Accel&raS「;R… % 创建子菜单,callbackt;set(h1lt,ColorM;,redfy); :uirnenufhZ/Laber/^fi/Accelerator/G^.. % 创建于菜单 ^allbackVseUhl/Color^/^reerrT);uinwnu(li2JLabBr:蓝色;AcGl@ratoiVBi・, % 创建子菜单(callbackyseqhl/ColorVblue"));set(gcf;position\[100T100T200,200J);>> set(h1 /color,white1); st(h1 /color/blackj; gt(h1/color)□ 00shirglor*40,3 0.5 CL8]>;右键属性栏在MATLAB中,利用函数uicontextmenu()创建右键快捷菜 单r该函数的调用格式为:uicontextmenu(fP1 Name\ P1 Value, ...)=该函数对右键快捷菜单的属性进行设置h=uicontextmenu(…X该函数返回右键快捷菜单的句柄优 创建快捷菜单,对正弦曲线的颜色进行设置,代码如下: clear all; close all;t=0:pi;20:2tpi;figure(fmenubar*/none,); % 建立图形窗口setfgca^liin1,^ 2*pi]);h2=uict>ntextmenu; %创建右犍快捷菜单c1=tset(h1,,tcolorV,redM)t;c2Hset(hi JcolorTgre^NT;c3=tset(h1/rcolor";,blueT;uimenu(h2;Laber;Red\„. % 创建菜单项,callback^d);uimenu(h2/Laber;Green,_ % 创建菜单项vcallback\c2);uimenu(h2/Laber;b1ue\. % 创建菜单项callback1c3);工具栏在MATLAB中,利用函数uitoolbar()为图形对象创建工具栏,利用函数uipushtooK )^luitoggletool()为工具栏创建按钮口 uitocMbar对象是uipushtoo国象和uitoggletool对象的父对象 口函数uitoolbar()的调用格式为工uitoolbarfPIName; P1 Value, 该函数设置工具栏的属性。
uitoolbar(E…卜该函数为句柄为h的图形对象设置工具栏口取消图形窗口的标准工具栏,创建新的工具栏:clear all; close alt;hl^igureftoolbar/none1); % 创建图形窗口h2=uitoolbar; %创建工具栏创建按钮组在MATLAB中『利用函数uibuttongrouW )创建按钮组,该 函数的调用格式为:ulbuttongroup(,P1Name,tPlValue, 该函数对按钮组的属性进行设置口h=uibuttongroup(,..):该函数返回按钮组的句柄h0如果h为按钮组的句柄,通过函数get(h)可以获取按钮组的所有属性值口利用函数uibuttQngroup()创建了按钿组后,可以在按钮组中添加各种类型的按钿,并设置按钥的 父对象为按钮组.在MALAB中,可以采用函数uipaneM )创建面板,该函数的调用格式为:uipanelfTIName,, P1Va山e,…):该函数对面板的属性进 行设置口h=uipanel(…):该函数返回面板的句柄为h“如果h为面板的句柄,则通过函数get(h)可以获取面板的所有属性值利用函数uipanel()创建面板后,用户可以在面板中添加按钮或文本等.在MATLAB中,利用函数ul匕旧史)创建表格对象,该函数 的调用格式为: 年uitablefPIName; P1 Value,…);利用函数uitalble创建表 格对象,并对属性进行设置.h=uitalble(...)z该函数返回表格对象的句柄为代创建表格对象,并对数据进行显示:clear all; close all;X=rand(10t3);figure;h=uitableCData;X); %创 建 uitable 对象set(hlUnits,/normalized,); 设置属性set(h;Position;[0,1 0.1 0.8 0,8]); %设置属性在有很多的预定义对话框,进行用户和计算 机之间的交互。
在进行GUI编程时,经常会用到这些预定 义对话框F使用也非常的简单和方便MATLAB中的预 定义对话框如表15.5所示.F面分别进行介绍口襄15 5常用的强定义对话想・ Q函酊 1良尊由他二dialog就清对话卷信■壮示对话看』uload*1博引衿疮爻件》忖用的面,Hnrnfil 力三告对话年暴春数揖文件的保漉图形界面,he1小产[押助我话衽」UlfttdiE*法附目录的样*用影界面「input 典切入骂士色ULg*t 围1法11文体的樟塞网舲界面b st dig口口泉乳诰株片存户1:犷什邪?叫理面pimtdlg*打印新话衽・ms-etcolor*强君色藜的标港图H界面”p・京stiupdl 却页面设H对话dmseifbrt 1设武宇他的标准乐庇界面询问对话番•性aZr显示笆台也度留的方运悟在MATLAB中,利用函数msgbox()建立消息对话框口它不 接受用户的任何输入,在用户单击OK按钮后,对话框自动 美闭,然后返回程序中继续执行口该函数的调用格式为: msghoxCMessage*):该函数建立消息对话框,消息的内容为 Me 号 sagemsgbox(Message\ Title*):该函数建立消息对话框的标题 为 Tltl"msgbox(,Message; Title; *lcon*);该函数建立消息对话框 曲con『 Icon可以为none、error, help, warn或 custom等,系统默认为norwo 玲msgbox( Message\ Title1, Custom*, Icon Data, IconMap): 该函数中利用IconData和lcon^/lap建立lconnh=msgbox(^J:该函数返回消息对话框的句柄「在MATLAB中,利用函数errordlg()建立错误对话框.它不 接受用户的任何输入,出诩户单击0K按钮后,对话框自 动关闭,然后返回程序中继续执行.该函数的调用格式 为:errordig:建立默认的错误对话框口 errordlgf Errorstring :该函数建立错误对话框的内容为Errorstring uerrordlgf^Errorstringp1 Dialogname1);该函数建立错误对 话框的名称为为Diaglcgnameqh=errordlg(t.t)3该函数返回错误对话框的句柄口在MATLAB中,采用函数warndlg()建立警告对话框,该目 数的调用格式和er「ordlg()基神同。
用户可以在 MATLAB的命令行窗口输入:help warndlg进行查询口warndlg;warndlgf警告信息! ,「警告〕在MATLAB中,利用函数lnputdlg()建立输入对话框口该函数 接受用户的输入,然后将输入值进行返回口answer=lnputdlg(f UserNamerVPasswordfJ/log In);带有默认值的输入对话框:clear all; close all;prompts输入矩阵的行:T输入矩阵的列:》name=矩阵大小; 年numlines=1;defaultanswe「={5,5};answer=inputdlg(promptT name, numlines,defaultanswer);在MATLAB中,利用函数listdlg()建立列表对话框,该函数 的调用格式为; 底[Selection, ok]=listdlg(,P1Name\ *P1 Value1):该函数设 置列表框的属性,用户单击按钮Ok后,选择的序号保存在Selection,参数ok为3利用函数Hstdlg()创建列表对话框:[SelectionTok]=listdlg(fListString\{,BlueVGreen\*Yello\1Black),... %创建列表框nameVChoose Color;..PKString;确定二..rancelStringV^;^InitialVa 山 e,3-listsize ,[200 1QOJ1 [selection,ok^itldlgtliststTingpfblueVgreen, yellk7name/chodse color/okstring/:^ .■工;一一■nc回5打ing「氤消,…intialvaluvA.selectionnnodeYsingle,…1itsiza ,[200 100]);在MATLAB中,利用函数questdlg()建立问题对话框.然 后等待用户回答。
默认情况下.回答按钮有3个,分别是Yes, No^nCanceLchoice=questdlgt你确定要关闭吗「,…%问题对话框确认,…Nswitch choice,case Yes. K飞dispfYou choose Yes.*);case NdlspfYou choose No.);case Cancel end在MATLAB中,利用函数waitbar()创建进度条对话框,反映程序运行的完成情况j该函数的调用格式为:waltbar(x):创建进度条,x介于[0 1]之间,如果x=0表示进 度条开始,x=1时进度完成如 kh=waltbar(xl message1):创建标题为message的进度条,返回值h为进度条的句柄.h=waltbar(x, Message, P1Name\ P1Valuet 对进度条的属性进行设置waitbar(x, h):更新句柄为h的进度条的进度x口waitbar(xf h, Updated message1):更新句辆为h的进度条的进度和标题.创建进度条,显示完成情况,代码如下:h=w3什bar(O「Please wait.,Name、进度条);创建进度条step s=1000;for i=1:stepswait bar(i/steps, h, f H ave finished …1 num2str{100Ai/steps),%,l); %更新进度pause(0.01);end Qclose(h);〉〉dname=uigetdir;>> drtairidname1 -):\^aj-k-ALL-OTLABV hap! 5A>>获取对话框路径在MATLAB中,采用函数uigetflle()建立文件打开对话框, 用户通过该对话框来选择要打开的文件。
该函数返回用 户选择的路径和文件名,然后可以进行数据的读取和写 入等操作.Filename=uigetflle:该函数建立默认的文件打开对话框, 就认为当前的目录,文件类型为所有的MATLAB文件, 返回所选择的文件名.[Filename, Pathname]=uigetfile(FilterSpec):该函数通过FilterSpec指定扩展名,返回选择的文件名和路径FilterSpec为字符串或字符串单元数组,用于文件名的过滤如果FilterSpec为*m,则在对话框中只列出后缀为 .m的文件[Filename, Pathname]=uigetflle(FllterSpec, DialogTItle) :该函数设置对话框的标题为DEIogTItle.在MATLAB中,采用函数uiputfile()建立文件保存对话框, 返回保存的文件名和路彼名Filename^uiputfile:该函数建立默认的文件保存对话框, 默认为当前的目录,文件类型为所有的MATLAB文件, 返回保存的文件名.[Filename, Pathname]=uiputfile:该函数建立默认的文件 保存对话框.返回保存的文件名和路径口[Filename, Patliname]=ulpu1file(FilterSpec):该函数通 过FllterSpE指定文件的扩展名。
FllterSpec为字符串或 字符串单元数组,用于文件名的过渡.[Filename, Pathname]=ulpu1flle(FilterSpecr DialogTItle) :该函金设置对话框的标题为DialogTitg。