matlab圖形GUI教程_第1頁(yè)
matlab圖形GUI教程_第2頁(yè)
matlab圖形GUI教程_第3頁(yè)
matlab圖形GUI教程_第4頁(yè)
matlab圖形GUI教程_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第十章 圖形用戶界面GUI制作用戶界面(或接口)是指:人與機(jī)器(或程序)之間交互作用的工具和方法。如鍵盤、鼠標(biāo)、跟蹤球、話筒都可成為與計(jì)算機(jī)交換信息的接口。圖形用戶界面(Graphical User Interfaces ,GUI)則是由窗口、光標(biāo)、按鍵、菜單、文字說(shuō)明等對(duì)象(Objects)構(gòu)成的一個(gè)用戶界面。用戶通過(guò)一定的方法(如鼠標(biāo)或鍵盤)選擇、激活這些圖形對(duì)象,使計(jì)算機(jī)產(chǎn)生某種動(dòng)作或變化,比如實(shí)現(xiàn)計(jì)算、繪圖等。假如讀者所從事的數(shù)據(jù)分析、解方程、計(jì)算結(jié)果可視工作比較單一,那么一般不會(huì)考慮GUI的制作。但是如果讀者想向別人提供應(yīng)用程序,想進(jìn)行某種技術(shù)、方法的演示,想制作一個(gè)供反復(fù)使用且操作

2、簡(jiǎn)單的專用工具,那么圖形用戶界面也許是最好的選擇之一。MATLAB為表現(xiàn)其基本功能而設(shè)計(jì)的演示程序demo 是使用圖形界面的最好范例。MATLAB的用戶,在指令窗中運(yùn)行demo 打開(kāi)那圖形界面后,只要用鼠標(biāo)進(jìn)行選擇和點(diǎn)擊,就可瀏覽那豐富多彩的內(nèi)容。即便比較熟悉MATLAB的讀者,在他初次編寫(xiě)GUI程序時(shí),也會(huì)感到棘手。為使讀者獲得制作自己GUI的體驗(yàn),本章“入門”節(jié)提供了一個(gè)簡(jiǎn)單的示例。讀者只要輸入所提供的程序,就可引出相應(yīng)的界面。本章第2節(jié)敘述圖形用戶界面的設(shè)計(jì)原則和一般制作步驟。第3、4節(jié)分別介紹用戶菜單、用戶控件的制作。出于“由淺入深”的考慮,前4節(jié)制作GUI是通過(guò)M腳本文件實(shí)現(xiàn)的。利用

3、M函數(shù)文件制作GUI ,需要解決數(shù)據(jù)傳遞問(wèn)題,為此專設(shè)第5節(jié)給予闡述和示例。這前5節(jié)內(nèi)容對(duì)讀者理解交互圖形界面的工作原理很有幫助。本章第6節(jié)專述MATLAB6.5提供的界面設(shè)計(jì)工作臺(tái)的使用。值得指出:該設(shè)計(jì)工作臺(tái)與MATLAB5.3版的設(shè)計(jì)工具有很大不同。新的設(shè)計(jì)工作臺(tái)顯得更成熟、方便。在此提醒讀者,假如要比較準(zhǔn)確的理解本章程序和掌握本章內(nèi)容,請(qǐng)先閱讀第9章關(guān)于圖柄的內(nèi)容。10.1 入門【例10.1-1】對(duì)于傳遞函數(shù)為的歸一化二階系統(tǒng),制作一個(gè)能繪制該系統(tǒng)單位階躍響應(yīng)的圖形用戶界面。本例演示:(A)圖形界面的大致生成過(guò)程;(B)靜態(tài)文本和編輯框的生成;(C)坐標(biāo)方格控制鍵的形成;(D)如何使用

4、該界面。(1)clf resetH=axes('unit','normalized','position',0,0,1,1,'visible','off');set(gcf,'currentaxes',H);str='fontname隸書(shū)歸一化二階系統(tǒng)的階躍響應(yīng)曲線'text(0.12,0.93,str,'fontsize',13);h_fig=get(H,'parent');set(h_fig,'unit','normaliz

5、ed','position',0.1,0.2,0.7,0.4);h_axes=axes('parent',h_fig,. 'unit','normalized','position',0.1,0.15,0.55,0.7,. 'xlim',0 15,'ylim',0 1.8,'fontsize',8);圖 10.1-1 (2)h_text=uicontrol(h_fig,'style','text',. 'unit'

6、;,'normalized','position',0.67,0.73,0.25,0.14,. 'horizontal','left','string','輸入阻尼比系數(shù)','zeta =');h_edit=uicontrol(h_fig,'style','edit',. 'unit','normalized','position',0.67,0.59,0.25,0.14,. 'horizonta

7、l','left',. 'callback',. 'z=str2num(get(gcbo,''string'');',. 't=0:0.1:15;',. 'for k=1:length(z);',. 'y(:,k)=step(1,1 2*z(k) 1,t);',. 'plot(t,y(:,k);',. 'if (length(z)>1) ,hold on,end,',. 'end;',. 'hold

8、 off,'); 圖 10.1-2 (3)h_push1=uicontrol(h_fig,'style','push',. 'unit','normalized','position',0.67,0.37,0.12,0.15,. 'string','grid on','callback','grid on');h_push2=uicontrol(h_fig,'style','push',. 'unit&#

9、39;,'normalized','position',0.67,0.15,0.12,0.15,. 'string','grid off','callback','grid off');圖 10.1-3 (4)圖 10.1-4 圖 10.1-5 10.2 圖形用戶界面的設(shè)計(jì)原則和一般步驟10.2.1 設(shè)計(jì)原則(1)簡(jiǎn)單性(2)一致性(3)習(xí)常性(4)其它考慮因素10.2.2 一般制作步驟10.3 界面菜單(uimenu)10.3.1 圖形窗的標(biāo)準(zhǔn)菜單【例10.3.1-1】本例說(shuō)明:如何隱藏和恢復(fù)標(biāo)準(zhǔn)

10、菜單的顯示。(1)H_fig=figure(2)set(H_fig , 'MenuBar','none');set(gcf,'menubar',menubar);(3)set(gcf,'menubar','figure'); 圖 10.3-1 圖 10.3-2 10.3.2 自制的用戶菜單【例10.3.2-1】本例演示:如何自制一個(gè)帶下拉菜單表的用戶菜單(如圖10.3-3所示)。該菜單能使圖形窗背景顏色設(shè)置為蘭色或紅色。figureh_menu=uimenu(gcf,'label','Col

11、or');% <2>h_submenu1=uimenu(h_menu,'label','Blue',.% <3>'callback','set(gcf,''Color'',''blue'')');% <4>h_submenu2=uimenu(h_menu,'label','Red',.% <5>'callback','set(gcf,''Co

12、lor'',''red'')');%<6>圖 10.3-3 10.3.3 用戶菜單的屬性10.3.3.1 回調(diào)屬性和菜單名(1)菜單名屬性(2)回調(diào)屬性.1-1】本例的目標(biāo)是:在圖形窗上自制一個(gè)名為【Test】的“頂層菜單項(xiàng)”;當(dāng)用鼠標(biāo)點(diǎn)動(dòng)該菜單項(xiàng)時(shí),將產(chǎn)生一個(gè)帶分格的封閉坐標(biāo)軸。通過(guò)本例說(shuō)明:(A)回調(diào)屬性的運(yùn)作機(jī)理;(B)用戶頂層菜單項(xiàng)的制作(C)uimenu屬性的設(shè)置方法;(D)復(fù)雜字符串的構(gòu)成方法和注意事項(xiàng)。(1)grid on,set(gca,'box','on') 圖10.3-4 (

13、2)eval('grid on,set(gca,''box'',''on'')') (3)uimenu('Label','Test','Callback','grid on,set(gca,''box'',''on''),') 圖10.3-5 (4)uimenu('Label','Test', .'Callback','grid on

14、,' , . 'set(gca,''box'',''on'');') (5)Lpv='Test'Cpv='grid on,','set(gca,''box'',''on''),'uimenu('Label', Lpv, 'Callback' , Cpv) (6)PS.Label='Test'PS.Callback='grid on;'

15、,'set(gca,''box'',''on'');'uimenu(PS) 10.3.3.2 設(shè)置簡(jiǎn)捷鍵或快捷鍵【例10.3.3.2-1】本例目標(biāo):使圖10.3-3所示菜單成為圖10.3-6那樣,Color菜單項(xiàng)及其下拉的Blue菜單各帶一個(gè)簡(jiǎn)捷鍵,而另一項(xiàng)下拉菜單Red帶一個(gè)快捷鍵。EXM100332_1.Mfigureh_menu=uimenu(gcf,'Label','&Color');%<2>h_submenu1=uimenu(h_menu,'La

16、bel','&Blue',.%<3>'Callback','set(gcf,''color'',''blue'')');h_submenu2=uimenu(h_menu,'label','Red',.'Callback','set(gcf,''color'',''red'')',.'Accelerator',

17、9;r');%<7>圖 10.3-6 10.3.3.3 用戶菜單的外觀設(shè)計(jì)【例10.3.3.3-1】本例演示:()把用戶菜單 'Option' 設(shè)置為頂層的第菜單項(xiàng);()下拉菜單被兩條分隔線分為三個(gè)菜單區(qū);()最下菜單項(xiàng)又有兩個(gè)子菜單組成。()EXM100333_1.MfigureBackColor=get(gcf,'Color');h_menu=uimenu('label','Option','Position',3);h_sub1=uimenu(h_menu,'label',

18、'grid on','callback','grid on');h_sub2=uimenu(h_menu,'label','grid off','callback','grid on');h_sub3=uimenu(h_menu,'label','box on','callback','box on',.'separator','on');%<6>h_sub4=uimenu(h

19、_menu,'label','box off','callback','box off');h_sub5=uimenu(h_menu,'label','Figure Color','Separator','on'); %<8>h_subsub1=uimenu(h_sub5,'label','Red','ForeGroundColor','r',.%<9> 'callback

20、','set(gcf,''Color'',''r'')');h_subsub2=uimenu(h_sub5,'label','Reset',. 'callback','set(gcf,''Color'',BackColor)');圖10.3-7()Pos_O=get(h_menu,'position'),%查詢Option菜單位置值Pos_BoxOn=get(h_sub3,'positio

21、n')%查詢box ob子菜單位置值Pos_Red=get(h_subsub1,'position')%查詢r(jià)ed子菜單的位置值 Pos_O = 3Pos_BoxOn = 3Pos_Red = 1 【例10.3.3.3-2】本例演示:當(dāng)某菜單項(xiàng)選中后,如何使該菜單項(xiàng)貼上檢錄符“”。exm100333_2.mfigureh_menu=uimenu('label','Option');h_sub1=uimenu(h_menu,'label','Grid on',.%<3>'callback&

22、#39;,.'grid on,',.'set(h_sub1,''checked'',''on''),',.'set(h_sub2,''checked'',''off''),',.);h_sub2=uimenu(h_menu,'label','Grid off',.%<4>'callback',.'grid off,',.'set(h_su

23、b2,''checked'',''on''),',.'set(h_sub1,''checked'',''off''),',.); 圖 10.3-8 10.3.3.4 使能(Enable)與可見(jiàn)性(Visible)屬性1】 本例目標(biāo):制作一個(gè)帶四個(gè)子菜單項(xiàng)的頂層菜單項(xiàng);該下拉菜單分為兩個(gè)功能區(qū);每個(gè)功能區(qū)的兩個(gè)菜單項(xiàng)是相互對(duì)立的,因此采用使能屬性處理;當(dāng)圖形窗坐標(biāo)軸消隱時(shí),整個(gè)坐標(biāo)分隔控制功能區(qū)不可見(jiàn)。(1)EXM100334_1.Mclfh_m

24、enu=uimenu('label','Option');h_sub1=uimenu(h_menu,'label','Axis on');h_sub2=uimenu(h_menu,'label','Axis off',. 'enable','off');h_sub3=uimenu(h_menu,'label','Grid on',. 'separator','on','visible',&

25、#39;off');h_sub4=uimenu(h_menu,'label','Grid off',. 'visible','off');set(h_sub1,'callback',. 'Axis on,',. 'set(h_sub1,''enable'',''off''),',. 'set(h_sub2,''enable'',''on'')

26、,',. 'set(h_sub3,''visible'',''on''),',. 'set(h_sub4,''visible'',''on''),');set(h_sub2,'callback',. 'axis off,',. 'set(h_sub1,''enable'',''on''),',. 'set(h_

27、sub2,''enable'',''off''),',. 'set(h_sub3,''visible'',''off''),',. 'set(h_sub4,''visible'',''off''),');set(h_sub3,'callback',.'grid on,',.'set(h_sub3,''enabl

28、e'',''off''),',.'set(h_sub4,''enable'',''on''),');set(h_sub4,'callback',.'grid off,',.'set(h_sub3,''enable'',''on''),',.'set(h_sub4,''enable'',''off

29、''),');(2)圖10.3-9(3)圖10.3-10(4)圖10.3-11(5)圖10.3-1210.3.4 現(xiàn)場(chǎng)菜單的制作【例10.3.4-1】目標(biāo):繪制一條Sa曲線,創(chuàng)建一個(gè)與之相聯(lián)系的現(xiàn)場(chǎng)菜單,用以控制Sa曲線的顏色。(1)EXM10034_1.Mt=(-3*pi:pi/50:3*pi)+eps;y=sin(t)./t;hline=plot(t,y);cm=uicontextmenu;%uimenu(cm,'label','Red','callback','set(hline,''colo

30、r'',''r''),')uimenu(cm,'label','Blue','callback','set(hline,''color'',''b''),')uimenu(cm,'label','Green','callback','set(hline,''color'',''g''),'

31、;)set(hline,'uicontextmenu',cm) (2)圖 10.3-13 10.4 用戶控件(uicontrol)10.4.1 控件制作函數(shù)10.4.2 用戶控件的種類10.4.3 控件制作示例10.4.3.1 雙位按鍵、無(wú)線電按鍵、控件區(qū)域框示例.1-1】目標(biāo):創(chuàng)建一個(gè)界面包含4種控件:靜態(tài)文本、“無(wú)線電”選擇開(kāi)關(guān)、雙位按鍵、控件區(qū)域框。EXM100431_1.Mclf resetset(gcf,'menubar','none')set(gcf,'unit','normalized','p

32、osition',0.2,0.2,0.64,0.32);set(gcf,'defaultuicontrolunits','normalized')h_axes=axes('position',0.05,0.2,0.6,0.6); t=0:pi/50:2*pi;y=sin(t);plot(t,y);set(h_axes,'xlim',0,2*pi);set(gcf,'defaultuicontrolhorizontal','left');htitle=title('正弦曲線')

33、;set(gcf,'defaultuicontrolfontsize',12);uicontrol('style','frame',.%<11> 'position',0.67,0.55,0.25,0.25);uicontrol('style','text',.%<13> 'string','正斜體圖名:',. 'position',0.68,0.77,0.18,0.1,. 'horizontal','l

34、eft');hr1=uicontrol(gcf,'style','radio',.%<17> 'string','正體',. 'position',0.7,0.69,0.15,0.08); set(hr1,'value',get(hr1,'Max');%<20>set(hr1,'callback',.%<21>'set(hr1,''value'',get(hr1,''m

35、ax''),',.%<22>'set(hr2,''value'',get(hr2,''min''),',.%<23>'set(htitle,''fontangle'',''normal''),',.);hr2=uicontrol(gcf,'style','radio',.%<26>'string','斜體',.&#

36、39;position',0.7,0.58,0.15,0.08,.'callback',.'set(hr1,''value'',get(hr1,''min''),',.%<30>'set(hr2,''value'',get(hr2,''max''),',.%<31>'set(htitle,''fontangle'',''italic&

37、#39;')',.); %<33> ht=uicontrol(gcf,'style','toggle',.%<34> 'string','Grid',. 'position',0.67,0.40,0.15,0.12,. 'callback','grid');圖 10.4-1 10.4.3.2 靜態(tài)文本框、滑動(dòng)鍵、檢錄框示例【例10.4.3.2-1】目標(biāo):制作演示“歸一化二階系統(tǒng)單位階躍響應(yīng)”的交互界面。在該界面中,阻尼比可在0.02,2.02中

38、連續(xù)調(diào)節(jié),標(biāo)志當(dāng)前阻尼比值;可標(biāo)志峰值時(shí)間和大小;可標(biāo)志(響應(yīng)從0到0.95所需的)上升時(shí)間。本例涉及以下主要內(nèi)容:(A)靜態(tài)文本的創(chuàng)建和實(shí)時(shí)改寫(xiě)。(B)滑動(dòng)鍵的創(chuàng)建;'Max' 和 'Min' 的設(shè)置;'Value' 的設(shè)置和獲取。(C)檢錄框的創(chuàng)建;'Value' 的獲取。(D)受多個(gè)控件影響的回調(diào)操作。EXM100432_1.Mclf resetset(gcf,'unit','normalized','position',0.1,0.2,0.64,0.35);set(gcf,&

39、#39;defaultuicontrolunits','normalized');set(gcf,'defaultuicontrolfontsize',12);set(gcf,'defaultuicontrolfontname','隸書(shū)');set(gcf,'defaultuicontrolhorizontal','left');str='歸一化二階系統(tǒng)階躍響應(yīng)曲線'set(gcf,'name',str,'numbertitle','o

40、ff');h_axes=axes('position',0.05,0.2,0.6,0.7);set(h_axes,'xlim',0,15);str1='當(dāng)前阻尼比='t=0:0.1:10;z=0.5;y=step(1,1 2*z 1,t);hline=plot(t,y);htext=uicontrol(gcf,'style','text',.%<14> 'position',0.67,0.8,0.33,0.1,. 'string',str1,sprintf(

41、9;%1.4g',z);hslider=uicontrol(gcf,'style','slider',.%<17> 'position',0.67,0.65,0.33,0.1,. 'max',2.02,'min',0.02,.%<19> 'sliderstep',0.01,0.05,.%<20> 'Value',0.5);%<21>hcheck1=uicontrol(gcf,'style','checkb

42、ox',.%<22> 'string','最大峰值' ,. 'position',0.67,0.50,0.33,0.11);vchk1=get(hcheck1,'value');%<25>hcheck2=uicontrol(gcf,'style','checkbox',.%<26> 'string','上升時(shí)間(0->0.95)',. 'position',0.67,0.35,0.33,0.11);vc

43、hk2=get(hcheck2,'value'); %<29>set(hslider,'callback',.%<30> 'z=get(gcbo,''value'');',.%<31> 'callcheck(htext,str1,z,vchk1,vchk2)');%<32>set(hcheck1,'callback',.%<33> 'vchk1=get(gcbo,''value'');

44、',.%<34> 'callcheck(htext,str1,z,vchk1,vchk2)');%<35>set(hcheck2,'callback',.%<36> 'vchk2=get(gcbo,''value'');',.%<37> 'callcheck(htext,str1,z,vchk1,vchk2)');%<38>CALLCHECK.Mfunction callcheck(htext,str1,z,vchk1,vchk2)

45、cla,set(htext,'string',str1,sprintf('%1.4g',z);%<2>dt=0.1;t=0:dt:15;N=length(t);y=step(1,1 2*z 1,t);plot(t,y);if vchk1 %<4> ym,km=max(y); if km<(N-3)%<6> k1=km-3;k2=km+3;k12=k1:k2;tt=t(k12); yy=spline(t(k12),y(k12),tt);%<8> yym,kkm=max(yy); line(tt(kkm),yym

46、,'marker','.',.%<10> 'markeredgecolor','r','markersize',20); ystr='ymax = ',sprintf('%1.4g',yym); tstr='tmax = ',sprintf('%1.4g',tt(kkm); text(tt(kkm),1.05*yym,ystr;tstr) else%<15> text(10,0.4*y(end),'ymax ->

47、1''tmax -> inf') endendif vchk2%<19> k95=min(find(y>0.95);k952=(k95-1),k95; t95=interp1(y(k952),t(k952),0.95);%<21> line(t95,0.95,'marker','o','markeredgecolor','k','markersize',6); tstr95='t95 = ',sprintf('%1.4g',

48、t95); text(t95,0.65,tstr95)end 圖10.4-210.4.3.3 可編輯框、彈出框、列表框、按鍵示例【例10.4.3.3-1】目標(biāo):制作一個(gè)能繪制任意圖形的交互界面。它包括:可編輯文本框、彈出框、列表框。本例的關(guān)鍵內(nèi)容是:如何使編輯框允許輸入多行指令。EXM100433_1.Mclf reset%<1>set(gcf,'unit','normalized','position',0.1,0.4,0.85,0.35);set(gcf,'defaultuicontrolunits','n

49、ormalized');set(gcf,'defaultuicontrolfontsize',11);set(gcf,'defaultuicontrolfontname','隸書(shū)');set(gcf,'defaultuicontrolhorizontal','left');set(gcf,'menubar','none');str='通過(guò)多行指令繪圖的交互界面'set(gcf,'name',str,'numbertitle',&

50、#39;off');h_axes=axes('position',0.05,0.15,0.45,0.70,'visible','off');uicontrol(gcf,'Style','text',. 'position',0.52,0.87,0.26,0.1,. 'String','繪圖指令輸入框');hedit=uicontrol(gcf,'Style','edit',.%<14> 'position&#

51、39;,0.52,0.05,0.26,0.8,. 'Max',2);%<16>hpop=uicontrol(gcf,'style','popup',.%<17> 'position',0.8,0.73,0.18,0.12,. 'string','spring|summer|autumn|winter');%<19>hlist=uicontrol(gcf,'Style','list',.%<20> 'positio

52、n',0.8,0.23,0.18,0.37,. 'string','Grid on|Box on|Hidden off|Axis off',.%<22> 'Max',2);%<23>hpush=uicontrol(gcf,'Style','push',.%<24> 'position',0.8,0.05,0.18,0.15,'string','Apply');set(hedit,'callback','

53、;calledit(hedit,hpop,hlist)');%<26>set(hpop,'callback','calledit(hedit,hpop,hlist)');%<27>set(hpush,'callback','calledit(hedit,hpop,hlist)');%<28>CALLEDIT.Mfunction calledit(hedit,hpop,hlist)ct=get(hedit,'string');%<2>vpop=get(hpop,

54、'value');%<3>vlist=get(hlist,'value');%<4>if isempty(ct)%<5> eval(ct')%<6> popstr='spring','summer','autumn','winter'%<7> liststr='grid on','box on','hidden off','axis off'%<8> inv

55、str='grid off','box off','hidden on','axis on'%<9> colormap(eval(popstrvpop)%<10> vv=zeros(1,4);vv(vlist)=1; for k=1:4 if vv(k);eval(liststrk);else eval(invstrk);end endend 圖 10.4-310.5 由M函數(shù)文件產(chǎn)生用戶菜單和控件10.5.1 利用全局變量編寫(xiě)用戶界面函數(shù)文件【例10.5.1-1】目標(biāo):利用M函數(shù)文件創(chuàng)建與例相同的用戶界面

56、。本例演示:如何依靠全局變量傳遞控件的圖柄,從而保證回調(diào)動(dòng)作正確執(zhí)行。(1)exm10051_1.mfunction exm10051_1( )global hedit hpop hlist(這中間是:原exm100433_1.m第1行到第25行的全部指令)set(hedit,'callback','calledit1');%<26>set(hpop,'callback','calledit1');%<27>set(hpush,'callback','calledit1');

57、%<28>CALLEDIT1.Mfunction calledit1( )global hedit hpop hlist(下面續(xù)接內(nèi)容是:原calledit.m第2行以下的全部指令)(2)10.5.2 利用 'UserData' 屬性編寫(xiě)用戶界面函數(shù)文件【例10.5.2-1】目標(biāo):利用M函數(shù)文件創(chuàng)建與例相同的用戶界面。本例演示:如何依靠圖形窗的'UserData' 屬性傳送用戶控件的圖柄,從而保證回調(diào)動(dòng)作正確執(zhí)行。(1)exm10052_1.mfunction exm10052_1( )(這中間是:原exm100433_1.m第1行到第25行的全部指

58、令)set(hedit,'callback','calledit2');%<26>set(hpop,'callback','calledit2');%<27>set(hpush,'callback','calledit2');%<28>set(gcf,'UserData',hedit,hpop,hlist)calledit2.mfunction calledit2( )H=get(gcf,'UserData');ct=get(H(1

59、),'string');%<2>vpop=get(H(2),'value');%<3>vlist=get(H(3),'value');%<4>(下面續(xù)接內(nèi)容是:原calledit.m第5行以下的全部指令)(2)10.5.3 利用遞歸法編寫(xiě)用戶界面函數(shù)文件【例10.5.3-1】目標(biāo):利用M函數(shù)文件創(chuàng)建與例相同的用戶界面。本例演示:如何依靠圖形窗'UserData' 屬性在遞歸調(diào)用中傳送用戶控件的圖柄,保證回調(diào)動(dòng)作正確執(zhí)行。(1)exm10053_1.mfunction exm10053_1(fla

60、g)if nargin<1;flag='startup'end%<2>if ischar(flag);error('flag must be character ''startup''.');endswitch flag%<4>case 'startup'%<5>clf reset%<6>set(gcf,'unit','normalized','position',0.1,0.4,0.85,0.35);set(gc

61、f,'defaultuicontrolunits','normalized');set(gcf,'defaultuicontrolfontsize',11);set(gcf,'defaultuicontrolfontname','隸書(shū)');set(gcf,'defaultuicontrolhorizontal','left');set(gcf,'menubar','none');str='通過(guò)多行指令繪圖的交互界面'set(gcf,&#

62、39;name',str,'numbertitle','off');h_axes=axes('position',0.05,0.15,0.45,0.70,'visible','off'); uicontrol(gcf,'Style','text',. 'position',0.52,0.87,0.26,0.1,. 'String','繪圖指令輸入框');hedit=uicontrol(gcf,'Style',&#

63、39;edit',.%<19> 'position',0.52,0.05,0.26,0.8,.%<20> 'Max',2);%<21>hpop=uicontrol(gcf,'style','popup',.%<22> 'position',0.8,0.73,0.18,0.12,.%<23> 'string','spring|summer|autumn|winter');%<24>hlist=uicontr

64、ol(gcf,'Style','list',.%<25> 'position',0.8,0.23,0.18,0.37,.%<26> 'string','Grid on|Box on|Hidden off|Axis off',.%<27> 'Max',2);%<28>hpush=uicontrol(gcf,'Style','push',.%<29> 'position',0.8,0.05,0.1

65、8,0.15,'string','Apply');set(hedit,'callback','exm1053_1(''set'')');%<31>set(hpop,'callback','exm1053_1(''set'')');%<32>set(hpush,'callback','exm1053_1(''set'')');%<33>se

66、t(gcf,'UserData',hedit,hpop,hlist);%<34>case 'set'%<35>H=get(gcf,'UserData');%<36>ct=get(H(1),'string');%<37>vpop=get(H(2),'value');%<38>vlist=get(H(3),'value');%<39>if isempty(ct) eval(ct') popstr='spring','summer','autumn','winter' liststr='grid on','box on','hidden off','axis off' invstr='grid off','box

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論