第五講圖形用戶界面編程_第1頁
第五講圖形用戶界面編程_第2頁
第五講圖形用戶界面編程_第3頁
第五講圖形用戶界面編程_第4頁
第五講圖形用戶界面編程_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第五講圖形用戶界面編程第一頁,共三十六頁,2022年,8月28日MATLAB圖形界面中各對(duì)象關(guān)系根對(duì)象root圖形窗口對(duì)象figure右鍵菜單對(duì)象uicontextmenu菜單對(duì)象uimenu控件對(duì)象uicontrol坐標(biāo)軸對(duì)象axes線對(duì)象line文字對(duì)象text表面圖對(duì)象surface圖像對(duì)象image光源對(duì)象light第二頁,共三十六頁,2022年,8月28日窗口對(duì)象及其屬性設(shè)定窗口對(duì)象的建立

hwin=figure(屬性1,屬性值1,屬性2,屬性值2,…)hwin為圖形窗口的句柄,matlab環(huán)境允許打開多個(gè)窗口,每個(gè)窗口都對(duì)應(yīng)自己的句柄,通過該句柄可以進(jìn)一步對(duì)窗口的屬性等進(jìn)行操作。

hwin=gcf

獲得當(dāng)前窗口的句柄。第三頁,共三十六頁,2022年,8月28日?qǐng)D形窗口的屬性第四頁,共三十六頁,2022年,8月28日常用屬性

color屬性由紅綠藍(lán)三原色組成,取值范圍為0到1。

menubar屬性設(shè)置菜單條的形式。

name屬性設(shè)置圖形窗口的標(biāo)題欄中標(biāo)題內(nèi)容,其屬性值為一字符串。

numbertitle屬性是否顯示圖形窗口標(biāo)題欄中的圖形標(biāo)號(hào)。

units屬性設(shè)定圖形單位。如:pixels(象素點(diǎn))、inches(英寸)、centimeters(厘米)、normalized(歸一值)等第五頁,共三十六頁,2022年,8月28日position屬性設(shè)定窗口的位置和大小,為1×4向量,前兩個(gè)值為窗口左下角橫縱坐標(biāo)值,后兩個(gè)元素值為窗口的寬度和高度,其單位由units屬性設(shè)定。

resize屬性確定是否可以改變圖形窗口的大小。

toolbar屬性是否顯示工具條。

visible屬性決定窗口是否為可見。

Pointer屬性設(shè)置鼠標(biāo)的顯示形式。

第六頁,共三十六頁,2022年,8月28日對(duì)象屬性的修改改變對(duì)象的屬性值

set(對(duì)象句柄,屬性1,屬性值1,屬性2,屬性值2,…)

屬性的名稱用單引號(hào)括起來;如果不給出屬性值,則返回全部允許的屬性值。獲得對(duì)象的屬性值

V=get(句柄名,屬性)?gwin=figure('visible','off');?set(gwin,'color',[1,0,0],'position',[100,200,300,300],...'name','Myprogram','numbertitle','off','menubar','none');?set(gwin,'visible','on')第七頁,共三十六頁,2022年,8月28日回調(diào)函數(shù)(callbackfunction)CloseRequestFcn-關(guān)閉窗口時(shí)響應(yīng)函數(shù)KeyPressFcn-鍵盤按下時(shí)響應(yīng)函數(shù)windowButtonDownFcn-鼠標(biāo)按下時(shí)響應(yīng)函數(shù)WindowButtonMotionFcn-鼠標(biāo)移動(dòng)時(shí)響應(yīng)函數(shù)CreateFcn和DeleteFcn-建立和刪除對(duì)象時(shí)響應(yīng)函數(shù)CallBack-對(duì)象被選中時(shí)響應(yīng)函數(shù)第八頁,共三十六頁,2022年,8月28日?gwin=figuregwin=1?set(gwin,'windowbuttondownfcn','helpdlg(''mousebuttondown!'')')?set(gwin,'keypressfcn','helpdlg(''keyboardpressed!'')')

一旦該對(duì)象指定的事件發(fā)生,將自動(dòng)調(diào)用某指定的函數(shù),它可以是matlab文件,也可以是一組matlab程序。第九頁,共三十六頁,2022年,8月28日標(biāo)準(zhǔn)對(duì)話框及其調(diào)用文件名操作函數(shù)

uigetfile()和uiputfile()函數(shù)打開一個(gè)文件進(jìn)行讀、寫的對(duì)話框。

[fname,pname]=uigetfile(ffilter,strtitle,x,y)ffilter為文件名過濾器;strtiltle為對(duì)話框窗口標(biāo)題欄的顯示內(nèi)容;x、y為對(duì)話框出現(xiàn)的位置,省略則采用默認(rèn)位置。第十頁,共三十六頁,2022年,8月28日?[f,p]=uigetfile('*.m;*.txt','請(qǐng)選擇一個(gè)文件')f=fileprint.mp=E:\MATLABR11\work\第十一頁,共三十六頁,2022年,8月28日顏色設(shè)置對(duì)話框

c=uisetcolor;或c=uisetcolor(c0);

函數(shù)返回一個(gè)1×3的顏色向量,分別對(duì)應(yīng)紅、綠、藍(lán)三原色,按下“取消”按鈕后返回空的向量;如果給出向量c0,則在圖中指向c0所定義的顏色位置,且按下“取消”按鈕時(shí)返回c0的值。第十二頁,共三十六頁,2022年,8月28日字體設(shè)置對(duì)話框

h_Font=uisetfont或h_Font=uisetfont(h_Text,strTitle)h_Font為字體屬性的結(jié)構(gòu)體;h_Text為要設(shè)置的字符句柄,strTitle為對(duì)話框的標(biāo)題欄內(nèi)容。?s=uisetfonts=FontName:'楷體_GB2312'FontUnits:'points'FontSize:42FontWeight:'bold'FontAngle:'normal'第十三頁,共三十六頁,2022年,8月28日警告與錯(cuò)誤信息對(duì)話框

warndlg和errordlg函數(shù)二者的顯示圖標(biāo)不同。例:?h=warndlg({‘error:’,‘code1111.’},‘Warning’)

?h=errordlg({'error:','code1111.'},'Error')

第十四頁,共三十六頁,2022年,8月28日幫助信息對(duì)話框與警告、錯(cuò)誤信息對(duì)話框基本一致,僅僅是圖標(biāo)的不同。例:

?h=helpdlg({'幫助信息:','幫助信息對(duì)話框和警告錯(cuò)誤對(duì)話框基本一致,只是圖標(biāo)不同!'},'幫助')第十五頁,共三十六頁,2022年,8月28日通用信息框

msgbox(‘顯示信息’,’標(biāo)題’,’圖標(biāo)’)

圖標(biāo)包括:Error、Help、Warn以及Custom,如果缺省則為None。

?data=1:64;data=(data'*data)/64;?msgbox('Thisisanexampleofmsgbox!','customico','custom',data,hot(64))第十六頁,共三十六頁,2022年,8月28日Matlab圖形界面基本控件靜態(tài)文本’text’

一般用來作為信息提示用。編輯框’edit’

讀取用戶數(shù)據(jù)的文字窗口??蚣堋甪rame’

概括一組控件,也可以修飾用。列表框‘list’

包含多個(gè)選項(xiàng)供用戶選擇。第十七頁,共三十六頁,2022年,8月28日滾動(dòng)條’slider’

圖示某個(gè)范圍。按鈕’pushbutton’

其上的字符說明其作用。切換按鈕’toggle’

兩狀態(tài)按鈕,單擊改變其狀態(tài)。收音機(jī)按鈕’radio’

一組選項(xiàng),其中只能有一個(gè)被選中。檢取框’check’

一組選項(xiàng),可以選擇多項(xiàng)。彈出式菜單’popup’

選中時(shí)打開一個(gè)列表。第十八頁,共三十六頁,2022年,8月28日控件的常用屬性Units與position屬性意義同上,這里的位置是相對(duì)該窗口的左下角;String屬性標(biāo)注在控件上,用來說明或提示;Callback屬性實(shí)現(xiàn)該控件的實(shí)質(zhì)性功能;Enable屬性該控件的使能狀態(tài)‘on’或‘off’第十九頁,共三十六頁,2022年,8月28日Cdata屬性真彩色位圖,為一三維數(shù)組,用于美化界面;Tooltipstring屬性鼠標(biāo)指針位于該控件時(shí)的提示信息顯示;Interruptable屬性是否中斷當(dāng)前回調(diào)函數(shù)的執(zhí)行,‘on’或‘off’字體屬性設(shè)置字體第二十頁,共三十六頁,2022年,8月28日例1:h_main=figure(‘name’,‘a(chǎn)demoofguidesign’,‘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));']);第二十一頁,共三十六頁,2022年,8月28日functiongui_counter1()%gui_counterisademoofguidesign.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',['h=findobj(gcf,''tag'',''myedit'');','v=eval(get(h,''string''));',...'set(h,''string'',int2str(v+1));']);h_but2=uicontrol('style','pushbutton','position',[80505020],'string','DEC',...'callback',['h=findobj(gcf,''tag'',''myedit'');','v=eval(get(h,''string''));',...'set(h,''string'',int2str(v-1));']);第二十二頁,共三十六頁,2022年,8月28日例2functiongui_demo()%GUI_demoisanotherdemoofGUIdesign.h_main=figure('units','normalized','position',[0.30.30.50.4],...'name','GUIdemostration','numbertitle','off');h_axis=axes('units','normalized','position',[0.30.150.60.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',[0.10.60.060.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',[0.10.30.060.1],'cdata',bmp4,...'callback','zoomoff','tooltipstring','Disablezooming');第二十三頁,共三十六頁,2022年,8月28日第二十四頁,共三十六頁,2022年,8月28日Matlab菜單系統(tǒng)設(shè)計(jì)菜單系統(tǒng)的生成

菜單項(xiàng)句柄=uimenu(窗口句柄,屬性1,屬性值1,屬性2,屬性值2,…)

子菜單句柄=uimenu(菜單項(xiàng)句柄,屬性1,屬性值1,…)

屬性:菜單條名稱label回調(diào)函數(shù)callback第二十五頁,共三十六頁,2022年,8月28日熱鍵名稱accelerator背景顏色backgroundcolor前景顏色foregroundcolor選中狀態(tài)checked使能狀態(tài)enabled菜單條位置position分隔符separator第二十六頁,共三十六頁,2022年,8月28日ctxmenu=uicontextmenu;set(gcf,'uicontextmenu',ctxmenu);uimenu(ctxmenu,'label','zoomon','callback','zoomon');uimenu(ctxmenu,'label','x-axiszoomon','callback','zoomxon');uimenu(ctxmenu,'label','y-axiszoomon','callback','zoomyon');uimenu(ctxmenu,'label','zoomoff','callback','zoomoff');uimenu(ctxmenu,'label','checked','checked','on','separator','on');uimenu(ctxmenu,'label','disabled','enable','off');第二十七頁,共三十六頁,2022年,8月28日GUI設(shè)計(jì)工具簡(jiǎn)介guideGUI向?qū)гO(shè)計(jì)器。第二十八頁,共三十六頁,2022年,8月28日屬性設(shè)計(jì)器(PropertyEditor)設(shè)置所選圖形對(duì)象或GUI控件各屬性的值第二十九頁,共三十六頁,2022年,8月28日控件布局編輯器(AlignmentTool)設(shè)置控件的布局第三十頁,共三十六頁,2022年,8月28日菜單編輯器(MenuEditor)編輯菜單項(xiàng)第三十一頁,共三十六頁,2022年,8月28日回調(diào)函數(shù)編輯器(CallbackEditor)編輯控件屬性所對(duì)應(yīng)的回調(diào)函數(shù)第三十二頁,共三十六頁,2022年,8月28日例:示意小球碰撞過程出射角上擋板下?lián)醢宓谌?,共三十六頁?022年,8月28日h1=line([0,1],-0.09*[11]);set(h1,'linewidth',5);h2=line([0,1],1.09*[11]);set(h2,'linewidth',7);uu={[010],0.050.5};set(h_main,'userdata',uu);Tag=lstcolorTag=rdradio1Tag=rdradio2Tag=rdradio3第三十四頁,共三十六頁,2022年,8月28日functionexec_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([

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論