第7章 MATLAB圖形用戶界面設(shè)計(jì)_第1頁(yè)
第7章 MATLAB圖形用戶界面設(shè)計(jì)_第2頁(yè)
第7章 MATLAB圖形用戶界面設(shè)計(jì)_第3頁(yè)
第7章 MATLAB圖形用戶界面設(shè)計(jì)_第4頁(yè)
第7章 MATLAB圖形用戶界面設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩119頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第7章章 MATLAB圖形用戶圖形用戶 界面設(shè)計(jì)界面設(shè)計(jì)n7.1 圖形用戶句柄圖形用戶句柄n7.2 圖形用戶界面開發(fā)環(huán)境圖形用戶界面開發(fā)環(huán)境n7.3 菜單設(shè)計(jì)菜單設(shè)計(jì)n7.4 對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)n7.5 GUI的控制簡(jiǎn)介的控制簡(jiǎn)介n7.6 圖形用戶界面開發(fā)舉例圖形用戶界面開發(fā)舉例n7.7 本章小結(jié)本章小結(jié)n7.1 圖形用戶句柄圖形用戶句柄n7.2 圖形用戶界面開發(fā)環(huán)境圖形用戶界面開發(fā)環(huán)境n7.3 菜單設(shè)計(jì)菜單設(shè)計(jì)n7.4 對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)n7.5 GUI的控制簡(jiǎn)介的控制簡(jiǎn)介n7.6 圖形用戶界面開發(fā)舉例圖形用戶界面開發(fā)舉例n7.7 本章小結(jié)本章小結(jié)n圖形用戶界面(GUI)是指由窗口、菜

2、單、圖標(biāo)、光標(biāo)、按鍵、對(duì)話框和文本框等各種圖形對(duì)象組成的用戶界面。如果要進(jìn)行圖形界面設(shè)計(jì),通常有兩種方法:通過M文件創(chuàng)建圖形界面和通過GUI工具箱設(shè)計(jì)圖形界面。n在圖形界面設(shè)計(jì)過程中,MATLAB每創(chuàng)建一個(gè)圖形對(duì)象時(shí),都會(huì)為該對(duì)象分配唯一的一個(gè)值用以標(biāo)識(shí)該對(duì)象,稱其為圖形對(duì)象的句柄(Handle)。通過句柄可以實(shí)現(xiàn)對(duì)該對(duì)象的各種控制和各種屬性的設(shè)置。 MATLAB的圖形對(duì)象包括根對(duì)象、圖形窗口、坐標(biāo)軸對(duì)象、用戶接口對(duì)象、注釋對(duì)象,其中的關(guān)系如圖7.1所示,即句柄圖形系統(tǒng)示意圖。n在MATLAB中利用get函數(shù)獲取對(duì)象的屬性值,該函數(shù)的調(diào)用格式如下: V = get(h):該函數(shù)可以獲得句柄h的

3、屬性值; V = get(h, PropertyName):該函數(shù)可以獲取句柄h的指定屬性值; V = get(h, default):該函數(shù)可以獲得句柄h的所有默認(rèn)屬性。n在MATLAB中利用set函數(shù)設(shè)置對(duì)象的屬性值,該函數(shù)的調(diào)用格式如下: V = s e t ( h , P r o p e r t y N a m e , PropertyValue):該函數(shù)可以設(shè)置對(duì)象h的屬性PropertyName的值為PropertyValue。 V = set(h, PropertyName1, PropertyValue1, PropertyName1, PropertyValue1, ):該函

4、數(shù)可以設(shè)置對(duì)象h的多個(gè)屬性值。 V = set(h, PropertyName):該函數(shù)可以獲得對(duì)象h的PropertyName屬性可以設(shè)置的屬性值的范圍。 V = set(h):該函數(shù)可以獲得對(duì)象h所有可以設(shè)置的屬性值的范圍。n在MATLAB中利用findobj函數(shù)查找對(duì)象以獲得對(duì)象的句柄,該函數(shù)在圖形用戶界面設(shè)計(jì)中非常重要,該函數(shù)的調(diào)用格式如下: h = findobj:該函數(shù)返回根對(duì)象和其子對(duì)象的句柄。 h = findobj(PName, PValue1, ):該函數(shù)查找所有PName屬性值為PValue對(duì)象的句柄。 h = findobj(ObjHandles, PName):該函數(shù)

5、在對(duì)象句柄ObjHandles及其子對(duì)象中查找指定屬性名稱PName對(duì)象的句柄。 h = findobj(-property, PName):該函數(shù)查找指定屬性名稱PName對(duì)象的句柄。n7.1 圖形用戶句柄圖形用戶句柄n7.2 圖形用戶界面開發(fā)環(huán)境圖形用戶界面開發(fā)環(huán)境n7.3 菜單設(shè)計(jì)菜單設(shè)計(jì)n7.4 對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)n7.5 GUI的控制簡(jiǎn)介的控制簡(jiǎn)介n7.6 圖形用戶界面開發(fā)舉例圖形用戶界面開發(fā)舉例n7.7 本章小結(jié)本章小結(jié)n7.2.1 圖形用戶界面設(shè)計(jì)窗口 MATLAB提供了兩種啟動(dòng)GUI工具箱的方式:命令行方式和菜單選項(xiàng)方式。 1.命令方式 首先打開MATLAB軟件,然后在命令行

6、窗口中輸入guide命令,如圖7.2所示:然后回車得到如圖7.3所示的創(chuàng)建新GUI的窗口。可以看到MATLAB為GUI設(shè)計(jì)一共準(zhǔn)備了4個(gè)模板:(1)Blank GUI(Default):空白GUI模板,一般系統(tǒng)默認(rèn)采用該模板,其選中狀態(tài)如圖7.4所示:(2)GUI with Uicontrols:帶空間對(duì)象的GUI模板,其選中狀態(tài)如圖7.5所示:(3)GUI with Axes and Menu:帶坐標(biāo)軸與菜單的GUI模板,其選中狀態(tài)如圖7.6所示:(4)Modal Question Dialog:帶模式問題對(duì)話框的GUI模板,其選中狀態(tài)如圖7.7所示: 在GUI設(shè)計(jì)模板中選中一個(gè)模板,然后點(diǎn)

7、擊OK按鈕,就會(huì)顯示GUI設(shè)計(jì)窗口。選擇不同的設(shè)計(jì)模式時(shí),在GUI設(shè)計(jì)窗口中顯示的結(jié)果是不一樣的。圖形用戶界面設(shè)計(jì)窗口由菜單欄、工具欄、控件工具欄以及圖形對(duì)象設(shè)計(jì)區(qū)等4個(gè)功能區(qū)組成。如圖7.8為空白GUI模板的情形。 2.菜單方式 在MATLAB的主窗口中,選擇File菜單中的New菜單項(xiàng),再選擇其中的GUI命令,就會(huì)出現(xiàn)新建GUI的設(shè)計(jì)模板,其操作方式如圖7.9所示。后面的新建過程參照命令行的方式即可。 對(duì)應(yīng)于創(chuàng)建新的GUI用戶圖形界面,打開已經(jīng)存在的用戶圖形界面的方式也有兩種,分別是命令行形式和菜單形式。(1)圖形用戶界面GUI設(shè)計(jì)工具的啟動(dòng)命令為: guide filename,啟動(dòng)GU

8、I設(shè)計(jì)工具,并打開已建立的圖形用戶界面filename。(2)菜單形式的打開新建的GUI文件:在MATLAB的主窗口中,選擇File菜單中的Open菜單項(xiàng),再選擇命名為filename的fig文件,就會(huì)出現(xiàn)已建GUI的設(shè)計(jì)模板,其操作方式如圖7.10所示。n7.2.2 常用的用戶界面設(shè)計(jì)工具1.布局編輯器(Layout Editor) 用于從控件選擇板上選擇空間對(duì)象并放置到布局對(duì)象中,布局對(duì)象被激活后就成為圖形窗口。在命令窗口輸入guide命令或點(diǎn)擊工具欄中的guide圖標(biāo)都可以打開空白的布局編輯器。布局編輯器常用操作如下:(1)將控件對(duì)象放置到布局區(qū),可以有如下的操作:用鼠標(biāo)選擇并放置控件布

9、局區(qū)內(nèi),移動(dòng)控件到適當(dāng)?shù)奈恢?,改變控件的大小,選中多個(gè)對(duì)象的方法。如圖7.11顯示的即為拖動(dòng)多個(gè)控件到布局區(qū)域后的圖像。(2)激活圖形窗口:如果所建立的布局還沒有進(jìn)行存儲(chǔ),可用File菜單下的Save As菜單項(xiàng)(或者工具欄中的對(duì)應(yīng)項(xiàng)),按輸入的文件的名字,在激活圖形窗口的同時(shí)將存儲(chǔ)一對(duì)同名的M文件和帶有.fig擴(kuò)展名的FIG文件。(3)運(yùn)行GUI程序:首先將圖形界面保存,然后在命令窗口直接鍵入文件名或用openfig filename或者h(yuǎn)gload filename命令運(yùn)行GUI程序。也可以直接使用如圖7.12所示的運(yùn)行工具進(jìn)行GUI程序的運(yùn)行。圖7.13是程序運(yùn)行后的效果圖。(4)布局編

10、輯器參數(shù)設(shè)置:選擇File菜單下的Preferences菜單項(xiàng)打開參數(shù)設(shè)置窗口,點(diǎn)擊樹狀目錄中的GUIDE,既可以設(shè)置布局編輯器的參數(shù),如圖7.14所示。(5)布局編輯器的彈出菜單:在任一控件上按下鼠標(biāo)右鍵,會(huì)彈出一個(gè)菜單,通過該菜單可以完成布局編輯器的大部分操作,如圖7.15所示。2.位置調(diào)整工具(Alignment tool) 用于對(duì)GUI對(duì)象設(shè)計(jì)區(qū)內(nèi)的多個(gè)對(duì)象的位置進(jìn)行調(diào)整,打開方式有以下兩種:(1)從GUI設(shè)計(jì)窗口的工具欄上選擇Align Objects命令按鈕,如圖7.16所示。(2)選擇Tools菜單下的Align Objects.菜單項(xiàng),就可以打開對(duì)象位置調(diào)整器,如圖7.17所示

11、。 對(duì)象位置調(diào)整器中的第一欄是垂直方向的位置調(diào)整,第二欄是水平方向的位置調(diào)整。在選中多個(gè)對(duì)象后,可以方便的通過對(duì)象位置調(diào)整器調(diào)整對(duì)象間的對(duì)齊方式和距離,如圖7.18所示。 首先選中需要排列位置的控件,然后,在圖7.18中選擇右對(duì)齊方式對(duì)圖7.18中的兩個(gè)控件進(jìn)行右對(duì)齊,運(yùn)行結(jié)果如圖7.19所示。3.用屬性查看器查看設(shè)置控件屬性 用于查看、修改、設(shè)置對(duì)象的屬性值,打開方式:(1)從GUI設(shè)計(jì)窗口工具欄上選擇Property Inspector命令按鈕,如圖7.20所示。(2)選擇View菜單下的Property Inspector菜單項(xiàng),如圖7.21所示。(3)在命令窗口中輸入inspect;。

12、(4)在控件對(duì)象上單擊鼠標(biāo)右鍵,選擇彈出菜單的Property Inspector菜單項(xiàng),如圖7.22所示。圖7.23所示的即為屬性查看器打開后的效果圖。 使用屬性查看器(Using Property Inspector):可以通過其查看控件對(duì)象的基本屬性,從而對(duì)控件對(duì)象的屬性進(jìn)行修改??梢孕薷牡膶傩匀缦拢海?)修改布置控件的屬性(2)修改文本框的屬性(3)修改坐標(biāo)軸的屬性(4)修改按鈕的屬性(5)修改復(fù)選框的屬性 圖7.24顯示了使用屬性查看器將布置控件背景顏色修改為紅色后的效果圖。 4.對(duì)象瀏覽器(Object Browsers) 用于查看當(dāng)前設(shè)計(jì)階段的各個(gè)句柄圖形對(duì)象,可以在對(duì)象瀏覽器中

13、選中一個(gè)或者多個(gè)控件開打開該控件的屬性編輯。打開方式:(1)從GUI設(shè)計(jì)窗口的工具欄上選擇Object Browser命令按鈕,如圖7.25所示。 (2)選擇View菜單下的Object Browser子菜單,如圖7.26所示。(3)在設(shè)計(jì)區(qū)域單擊鼠標(biāo)右鍵,選擇彈出菜單的Object Browser,如圖7.27所示。圖7.28顯示了對(duì)象瀏覽器打開后的效果圖。5.Tab順序編輯器(Tab Order Editor) 用于設(shè)置用戶按鍵盤上的Tab鍵時(shí),對(duì)象被選中的先后順序。打開方式:(1)選擇Tools菜單下的Tab Order Editor菜單項(xiàng),就可以打開Tab順序編輯器,如圖7.29所示。

14、(2)從GUI設(shè)計(jì)窗口的工具欄上選擇Tab Order Editor命令按鈕,如圖7.30所示。圖7.31給出了Tab順序編輯器的打開后的界面界面,可以由此編輯鍵盤上Tab鍵時(shí),控件的響應(yīng)的順序。n7.1 圖形用戶句柄圖形用戶句柄n7.2 圖形用戶界面開發(fā)環(huán)境圖形用戶界面開發(fā)環(huán)境n7.3 菜單設(shè)計(jì)菜單設(shè)計(jì)n7.4 對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)n7.5 GUI的控制簡(jiǎn)介的控制簡(jiǎn)介n7.6 圖形用戶界面開發(fā)舉例圖形用戶界面開發(fā)舉例n7.7 本章小結(jié)本章小結(jié)n7.3.1 建立用戶菜單 MATLAB中提供兩種方法建立用戶菜單,一種方法是利用菜單編輯器,另一種方法是利用MATLAB提供的uimenu函數(shù)。1.利

15、用菜單編輯器,方法如下:(1)選擇Tools菜單下的Menu Editor菜單項(xiàng),就可以打開菜單編輯器,如圖7.32所示。(2)從GUI設(shè)計(jì)窗口的工具欄上選擇Menu Editor命令按鈕,如圖7.33所示。 在菜單編輯器中,我們可以創(chuàng)建、設(shè)置、修改下拉式菜單和快捷菜單。選擇工具菜單下的菜單編輯器子菜單,即可打開菜單編輯器,如下圖7.34所示。2.用uimenu函數(shù)創(chuàng)建用戶菜單 其調(diào)用格式如下:(1)創(chuàng)建一級(jí)菜單項(xiàng):一級(jí)菜單項(xiàng)句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,.)(2)創(chuàng)建子菜單項(xiàng):子菜單項(xiàng)句柄=uimenu(一級(jí)菜單項(xiàng)句柄,屬性名1,屬性值1,屬性名2

16、,屬性值2,.)n例 建立“圖形演示系統(tǒng)”菜單。要求該菜單包含Plot、Option和Quit這3個(gè)菜單項(xiàng)。其中,Plot包含兩個(gè)子菜單項(xiàng):Sine Wave和Cosine Wave(分別控制在圖形窗口中繪制正弦和余弦曲線)。Option包含4個(gè)子菜單項(xiàng):Grid on、Grid off(控制給坐標(biāo)軸加網(wǎng)格線)、Box on、Box off(控制給坐標(biāo)軸加邊框),且這4項(xiàng)只在繪制曲線時(shí)才是可選的。Figure Color用于控制圖形窗口背景顏色。Quit用于控制是否退出系統(tǒng)。n方法一:使用菜單編輯器。 首先添加菜單,包括三個(gè)菜單項(xiàng)(Plot、Option和Quit。)和它們所對(duì)應(yīng)的七個(gè)子菜單項(xiàng)

17、(Sine Wave和Cosine Wave,Grid on和Grid off,Box on和Box off等),如圖7.37所示。 其次,按照?qǐng)D7.37所示的界面對(duì)各個(gè)菜單項(xiàng)的屬性值進(jìn)行設(shè)置最終得到圖7.38。最后運(yùn)行運(yùn)行該界面,圖7.39顯示界面的最終效果。n方法二:使用uimenu函數(shù)進(jìn)行設(shè)計(jì)。其MATLAB程序如下。% 定義整個(gè)布局文件screen = get(0,ScreenSize);W = screen(3);H = screen(4);figure(Color, 1,1,1, Position, 0.2*H,0.2*H,0.6*W,0.4*H,. Name, 圖形演示系統(tǒng), N

18、umberTitle, off, MenuBar, none);% 定義Plot菜單項(xiàng)hplot = uimenu(gcf, Label, &Plot);% 定義Plot菜單項(xiàng)的子菜單Sine Waveuimenu(hplot, Label, Sine Wave, Call, t=-pi:pi/20:pi;, plot(t,sin(t); ,. set(hgon,Enable,on);, set(hgoff,Enable,on);,. set(hbon,Enable,on);, set(hboff,Enable,on););% 定義Plot菜單項(xiàng)的子菜單Cosine Waveuimen

19、u(hplot, Label, Cosine Wave, Call, t=-pi:pi/20:pi;,plot(t,cos(t);,. set(hgon,Enable,on);, set(hgoff,Enable,on);,. set(hbon,Enable,on);,set(hboff,Enable,on););% 定義Option菜單項(xiàng)hoption=uimenu(gcf,Label,&Option);% 定義Option菜單項(xiàng)子菜單Grig onhgon=uimenu(hoption,Label,&Grig on,Call,grid on,Enable,off);% 定義

20、Option菜單項(xiàng)子菜單Grig offhgoff=uimenu(hoption,Label,&Grig off,Call,grid off,Enable,off);% 定義Option菜單項(xiàng)子菜單Box onhbon=uimenu(hoption,Label,&Box on,separator,on,Call,box on,Enable,off);% 定義Option菜單項(xiàng)子菜單Box offhboff=uimenu(hoption,Label,&Box off,Call,box off,Enable,off);% 定義Option菜單項(xiàng)子菜單Figure Color

21、hfigcor=uimenu(hoption,Label,&Figure Color,Separator,on);% 定義Figure Color菜單項(xiàng)子菜單ruimenu(hfigcor,Label,&Red,Accelerator,r,Call,set(gcf,Color,r););% 定義Figure Color菜單項(xiàng)子菜單buimenu(hfigcor,Label,&Blue,Accelerator,b,Call,set(gcf,Color,b););% 定義Figure Color菜單項(xiàng)子菜單yuimenu(hfigcor,Label,&Yellow,

22、Call,set(gcf,Color,y);); % 定義Figure Color菜單項(xiàng)子菜單w uimenu(hfigcor,Label,&White,Call,set(gcf,Color,w););%定義Quit菜單項(xiàng)uimenu(gcf,Label,&Quit,Call,close(gcf);上述程序的運(yùn)行結(jié)果與圖7.39相同。n7.3.2 菜單對(duì)象常用屬性1.Tag屬性 Tag屬性用于定義該菜單對(duì)象的標(biāo)識(shí)值,因此它的取值為字符串。一旦Tag屬性被定義,那么在任何程序中均能通過該標(biāo)識(shí)找出菜單對(duì)象。2.Type屬性 Type屬性用于標(biāo)明圖形對(duì)象的類型,因而取值總是uimen

23、u。注:菜單對(duì)象的類型就是uimenu,用戶不可更改該屬性。3.UserData屬性 UserData屬性用于保存與該菜單對(duì)象相關(guān)的重要數(shù)據(jù)或信息,從而達(dá)到傳輸數(shù)據(jù)或信息的目的,它的取值是一個(gè)矩陣(缺省值矩陣為空)??梢允褂胹et和get函數(shù)訪問該屬性。4.Callback屬性 Tag_Callback(hObject,evevdata,handles),用于加入用戶的處理語(yǔ)句以實(shí)現(xiàn)所需功能。其中,hObject是控件的句柄;eventdata是備用參數(shù)(目前未定義);handles是一個(gè)結(jié)構(gòu)數(shù)組,存放當(dāng)前窗口所有對(duì)象的句柄,包括:圖形窗、所有控件和菜單的句柄,且可增加一些域來傳遞用戶數(shù)據(jù)。下

24、面舉例簡(jiǎn)要介紹Callback屬性的使用方法。n例 建立“圖形演示系統(tǒng)”菜單。菜單條中含有1個(gè)菜單項(xiàng):Plot。Plot中有Sine Wave和Cosine Wave兩個(gè)子菜單項(xiàng),分別控制在本圖形窗口畫出正弦和余弦曲線。其設(shè)計(jì)方案如下。n首先,利用菜單編輯器設(shè)計(jì)界面,如圖7.42所示。 其次,設(shè)置子菜單項(xiàng)的callback屬性,點(diǎn)擊如圖7.43所示View按鈕,然后再M(fèi)文件中添加畫圖的代碼。然后,在M文件中設(shè)置Sine Wave菜單項(xiàng)的回調(diào)函數(shù),代碼如下。function sin_Callback(hObject, eventdata, handles)% hObject handle to

25、sin (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)x = 0:0.5:pi;plot(sin(x)然后,在M文件中設(shè)置Cosine Wave菜單項(xiàng)的回調(diào)函數(shù),代碼如下。function cos_Callback(hObject, eventdata, handles)% hObject handle to cos (see GCBO)% eventdata reser

26、ved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)x = 0:0.5:pi;plot(cos(x)運(yùn)行設(shè)計(jì)的界面程序可得如圖7.44所示的交換界面。點(diǎn)擊Sine Wave子菜單可得如圖7.45所示的sin函數(shù)的運(yùn)行結(jié)果。n7.3.3 快捷菜單 快捷菜單是用鼠標(biāo)右鍵單擊某對(duì)象時(shí)在屏幕上彈出的菜單。這種菜單出現(xiàn)的位置是不固定的,而且總是和某個(gè)圖形對(duì)象相聯(lián)系。(1)利用uicontextmenu函數(shù)建立快捷菜單 格式為:hc=uico

27、ntextmenu:功能為建立快捷菜單,并且將句柄值賦給變量hc。(2)利用uimenu函數(shù)為快捷菜單建立菜單項(xiàng) 格式為:uimenu(快捷菜單名,屬性名,屬性值,):為創(chuàng)建的快捷菜單賦值,其中屬性名和屬性值構(gòu)成屬性二元對(duì)。(3)利用set函數(shù)將該快捷菜單和某圖形對(duì)象聯(lián)系起來n例 繪制曲線y=sin(2x),并建立一個(gè)與之相聯(lián)系的快捷菜單,用以控制曲線的線性核曲線寬度。n代碼如下:% 數(shù)據(jù)準(zhǔn)備x = 0:pi/100:2*pi;y = sin(2*pi*x);% 繪圖hl = plot(x,y);%建立快捷菜單hc = uicontextmenu; %建立“線型”菜單項(xiàng)hls = uimenu

28、(hc,Label,線型); %建立“線寬”菜單項(xiàng)hlw = uimenu(hc, Label,線寬); uimenu(hls, Label,虛線,Call,set(hl,LineStyle,:););uimenu(hls, Label,實(shí)線,Call,set(hl,LineStyle,-););uimenu(hlw, Label,加寬,Call,set(hl,LineWidth,2););uimenu(hlw, Label,變細(xì),Call,set(hl,LineWidth,0.5););%將該快捷菜單和曲線對(duì)象聯(lián)系起來set(hl,UIContextMenu,hc);運(yùn)行結(jié)果如圖7.46所示

29、。在空白的地方右擊可以彈出快捷菜單。選擇線型中虛線子菜單,可以得到如圖7.47所示的運(yùn)行效果。n7.1 圖形用戶句柄圖形用戶句柄n7.2 圖形用戶界面開發(fā)環(huán)境圖形用戶界面開發(fā)環(huán)境n7.3 菜單設(shè)計(jì)菜單設(shè)計(jì)n7.4 對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)n7.5 GUI的控制簡(jiǎn)介的控制簡(jiǎn)介n7.6 圖形用戶界面開發(fā)舉例圖形用戶界面開發(fā)舉例n7.7 本章小結(jié)本章小結(jié)n7.4.1 公共對(duì)話框 公用對(duì)話框是利用window資源的對(duì)話框,包括文件打開、文件保存、顏色設(shè)置、字體設(shè)置、打印設(shè)置、打印預(yù)覽、打印等。常用公共對(duì)話框有:1.文件打開對(duì)話框 函數(shù)為uigetfile,其調(diào)用格式如下:(1)uigetfile:彈出文件

30、打開對(duì)話框,列出當(dāng)前目錄下的所有MATLAB文件。(2)uigetfile(FilterSpec):列出當(dāng)前目錄下的所有由“FilterSpec”指定類型的文件。(3)uigetfile(FilterSpec,DialogTitle):列出當(dāng)前目錄下的所有由FilterSpec指定類型的文件,同時(shí)設(shè)置文件打開對(duì)話框的標(biāo)題為DialogTitle。(4)uigetfile(FilterSpec,DialogTitle,x, y):列出當(dāng)前目錄下的所有由FilterSpec指定類型的文件,同時(shí)設(shè)置文件打開對(duì)話框的標(biāo)題為DialogTitle,x,y參數(shù)用于確定文件打開對(duì)話框的位置。(5)fname

31、, pname=uiputfile():返回打開文件的文件名和路徑。n例 打開當(dāng)前目錄下文件類型為*.jpg;*.bmp;*.gif的圖片,并設(shè)置打開對(duì)話框的標(biāo)題為選擇圖片,返回打開文件的文件名和路徑。n代碼如下: filename,pathname=uigetfile(*.jpg;*.bmp;*.gif,選擇圖片);2.文件保存對(duì)話框 調(diào)用函數(shù)為uiputfile,其調(diào)用格式如下:(1)uiputfile:彈出文件保存對(duì)話框,列出當(dāng)前目前下的所有MATLAB文件。(2)uiputfile(InitFile):列出當(dāng)前目錄下的所有由InitFile指定類型的文件。(3)uiputfile(In

32、itFile, DialogTitle):列出當(dāng)前目錄下的所有由InitFile指定類型的文件,同時(shí)設(shè)置文件保存對(duì)話框的標(biāo)題為DialogTitle。(4)uiputfile(InitFile, DialogTitle):列出當(dāng)前目錄下的所有由InitFile指定類型的文件,x, y參數(shù)用于確定文件保存對(duì)話框的位置。(5)fname, pname=uiputfile():返回保存文件的文件名和路徑。n例 保存當(dāng)前目錄下文件類型為*.jpg;*.bmp;*.gif的圖片,并設(shè)置打開對(duì)話框的標(biāo)題為保存圖片,返回保存文件的文件名和路徑。nsfilename, sfilepath = uiputfil

33、e(*.jpg; *.bmp;*.gif, 保存圖片, untitled.jpg);n7.4.2 MATLAB專用對(duì)話框1.錯(cuò)誤信息對(duì)話框 用于提示錯(cuò)誤信息,函數(shù)為errordlg,其調(diào)用格式如下:(1)errordlg:打開默認(rèn)的錯(cuò)誤信息對(duì)話框。(2)errordlg(errorstring):打開顯示errorstring信息的錯(cuò)誤信息對(duì)話框。(3)errordlg(errorstring, dlgname):打開顯示errorstring信息的錯(cuò)誤信息對(duì)話框。(4)errordlg(errorstring, dlgname,on):打開顯示errorstring信息的錯(cuò)誤信息對(duì)話框,對(duì)話

34、框的標(biāo)題由dlgname指定。如果對(duì)話框已經(jīng)存在,on參數(shù)將對(duì)話框顯示在最前端。(5)h=errordlg():返回對(duì)話框的句柄。n例 建立一個(gè)標(biāo)題為”錯(cuò)誤信息”,信息提示為”輸入錯(cuò)誤,請(qǐng)重新輸入”的錯(cuò)誤信息提示框。nerrordlg(輸入錯(cuò)誤,請(qǐng)重新輸入, 錯(cuò)誤信息)2.幫助對(duì)話框 用于幫助提示信息,函數(shù)為helpdlg,其調(diào)用格式如下:(1)helpdlg:打開默認(rèn)的幫助對(duì)話框。(2)helpdlg(helpstring):打開顯示errorstring信息的幫助對(duì)話框。(3)helpdlg(helpstring, dlgname):打開顯示errorstring信息的幫助對(duì)話框,對(duì)話框的

35、標(biāo)題由dlgname指定。(4)h=helpdlg():返回對(duì)話框句柄。n例 建立一個(gè)標(biāo)題為“在線幫助”,幫助信息為“矩陣尺寸必須相等”的幫助信息提示框。nhelpdlg(矩陣尺寸必須相等,在線幫助);3.信息提示對(duì)話框 用于顯示提示信息,函數(shù)為msgbox,其調(diào)用格式如下:(1)msgbox(message):打開信息提示框?qū)υ捒?,顯示message信息。(2)msgbox(message, title):打開信息提示框?qū)υ捒?,顯示message信息,title確定對(duì)話框標(biāo)題。(3)msgbox(message, title, icon):打開信息提示框?qū)υ捒?,顯示message信息,ico

36、n用于顯示圖標(biāo),可選圖標(biāo)包括:none(無圖標(biāo),缺省值)、error、help、warn或者custom(用戶定義)。(4)msgbox(message, title, custom, iconcmap):當(dāng)使用用戶定義圖標(biāo)時(shí),iconData為定義圖標(biāo)的圖像數(shù)據(jù),iconData為圖像的色彩圖。(5)h = msgbox():返回對(duì)話框句柄。n例 建立一個(gè)message為“你按了取消鍵”,標(biāo)題為“保存失敗”,icon值為“error”的信息提示框。nmsgbox(你按了取消鍵, 保存失敗, error);4.進(jìn)程條 以圖形方式顯示運(yùn)算或處理的進(jìn)程,函數(shù)為waitbar,其調(diào)用格式如下:(1)

37、h=waitbar(x, title): 顯示以title為標(biāo)題的進(jìn)程條,x為進(jìn)程條的比例長(zhǎng)度,其值必須在0到1之間,h為返回的進(jìn)程條對(duì)象的句柄。(2) h=waitbar(x, title, creatcancelbtn, button_callback):在進(jìn)程條上使用CreatCancelBtn參數(shù)創(chuàng)建一個(gè)撤銷按鈕,在進(jìn)程中按下撤銷按鈕將調(diào)用button_callback函數(shù)。n例 創(chuàng)建并使用進(jìn)程條。nMATLAB代碼如下: % 建立進(jìn)程條 h = waitbar(0, pleas wait.); % 模擬進(jìn)程條滑動(dòng) for i = 1:10000 waitbar(i/10000, h)

38、 end % 關(guān)閉進(jìn)程條 close(h)5.輸入對(duì)話框 輸入對(duì)話框主要用于輸入信息,其調(diào)用函數(shù)為inputdlg,其調(diào)用格式如下:(1)answer=inputdlg(prompt):打開輸入對(duì)話框。answer為單元數(shù)組用于存儲(chǔ)輸入數(shù)據(jù),prompt為單元數(shù)組用于定義輸入數(shù)據(jù)窗口的個(gè)數(shù)及顯示信息。(2)answer=inputdlg(prompt,title):title用于確定對(duì)話框的標(biāo)題,其他參數(shù)同上。(3)answer=inputdlg(prompt,title,lineNo):參數(shù)lineNo可為標(biāo)量、列矢量和m2階矩陣。當(dāng)其為標(biāo)量時(shí),ineNo表示每個(gè)輸入窗口的行數(shù);當(dāng)其為列矢量

39、時(shí),列矢量的每個(gè)元素表示每個(gè)輸入窗口的行數(shù);當(dāng)其為矩陣時(shí),矩陣中每個(gè)元素對(duì)應(yīng)一個(gè)輸入窗口,每行的第一列為輸入窗口的行數(shù),第二列為輸入窗口的寬度。(4)answer=inputdlg(prompt,title,lineNo,defAns):參數(shù)defans為單元數(shù)組用于存儲(chǔ)所有輸入數(shù)據(jù)的默認(rèn)值。注:該元素個(gè)數(shù)必須和prompt所定義的輸入窗口數(shù)一樣,且所有輸入元素為字符串類型。(5)answer = inputdlg(prompt, title, lineNo, defAns, Resize):參數(shù)resize決定輸入對(duì)話框的大小能否被調(diào)整,可選值為on或者off。n例 創(chuàng)建兩個(gè)輸入窗口的輸入對(duì)

40、話框。n代碼如下: prompt=Input Name,Input Age; title=Input Name and Age; lines=2 1; def=John Smith,35; answer=inputdlg(prompt,title,lines,def);6.警告信息對(duì)話框 警告信息對(duì)話框用于提示警告信息,在MATLAB中其調(diào)用函數(shù)為warndlg,其調(diào)用格式如下: h = warndlg(warningstring, dlgname):打開警告信息對(duì)話框,顯示warningstring信息,dlgname確定對(duì)話框標(biāo)題,h為返回的對(duì)話框句柄。n例 創(chuàng)建一個(gè)對(duì)話名字為“警告”,提

41、示內(nèi)容為“數(shù)據(jù)類型不符”。n代碼如下: h=warndlg(數(shù)據(jù)類型不符, 警告);n7.1 圖形用戶句柄圖形用戶句柄n7.2 圖形用戶界面開發(fā)環(huán)境圖形用戶界面開發(fā)環(huán)境n7.3 菜單設(shè)計(jì)菜單設(shè)計(jì)n7.4 對(duì)話框設(shè)計(jì)對(duì)話框設(shè)計(jì)n7.5 GUI的控制簡(jiǎn)介的控制簡(jiǎn)介n7.6 圖形用戶界面開發(fā)舉例圖形用戶界面開發(fā)舉例n7.7 本章小結(jié)本章小結(jié)n7.5.1 常用控件簡(jiǎn)述 控件對(duì)象是事件響應(yīng)的圖形界面對(duì)象。當(dāng)某一件事發(fā)生時(shí),應(yīng)用程序會(huì)做出響應(yīng)并且執(zhí)行某些預(yù)定的功能子程序(Callback)。MATLAB中的控件主要有兩種:動(dòng)作控件和靜態(tài)控件。 常用控件有按鈕(Push Button),雙位按鈕(Toggl

42、e Button),單選按鈕(Radio Button),復(fù)選框(Check Box),列表框(List Box),彈出框(Popup Menu),編輯框(Edit Box),滑動(dòng)條(Slider),靜態(tài)文本(Static Text),邊框(Frame)和軸(Axes)。1控件對(duì)象的公共屬性(1)Children:取值為空矩陣,因?yàn)榭丶?duì)象沒有自己的子對(duì)象。(2)Parent:取值為某個(gè)圖形窗口對(duì)象的句柄,該句柄表明了控件對(duì)象所在的圖形窗口。(3)Tag:取值為字符串,定義了控件的標(biāo)識(shí)值。在所有程序中均可通過這個(gè)標(biāo)識(shí)值控制該控件對(duì)象。(4)Type:取值為uicontrol,用于表明圖形對(duì)象的

43、類型。(5)UserData:取值為空矩陣,用于保存與該控件對(duì)象相關(guān)的重要數(shù)據(jù)和信息。(6)Visible:取值為on 或off。2控件對(duì)象的基本控制屬性(1)BackgroundColor:取值為顏色的預(yù)定義字符或RGB數(shù)值;缺省值為淺灰色。(2)Callback:取值為字符串,可以是某個(gè)M文件名或者一小段MATLAB語(yǔ)句,當(dāng)某個(gè)控件對(duì)象被用戶激活時(shí),應(yīng)用程序就會(huì)運(yùn)行該屬性定義的子程序。(3)Enable:取值為on(缺省值),inactive和off。(4)Extend:取值為四元素矢量0, 0, width, height,記錄控件對(duì)象標(biāo)題字符的位置和尺寸。(5)ForegroundCo

44、lor:取值為顏色的預(yù)定義字符或RGB數(shù)值,該屬性定義控件對(duì)象標(biāo)題字符的顏色;缺省值為黑色。(6)Max:取值為數(shù)值,缺省值為1。(7)Min:取值為數(shù)值,缺省值為0。(8)String:取值為字符串矩陣或塊數(shù)組,定義控件對(duì)象標(biāo)題或選項(xiàng)內(nèi)容。(9)Style:取值可以是pushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox,定義了控件的外觀樣式。(10)Units:取值可以是pixels (缺省值), normalized(相對(duì)單位), inches, centimeters(厘米)或points(磅),定義控件的度量單位。(11)Value:取值可以是矢量,也可以是數(shù)值,其含義及解釋依賴于控件對(duì)象的類型。3控件對(duì)象的修飾屬性(1)rontAngle:取值為normal(正體,缺省值),italic(斜體),oblique(方頭),定義了字體的旋轉(zhuǎn)角度。(2)FontName:取值為控件標(biāo)題等字體的字庫(kù)名。(3)FontSize:取值為數(shù)值,定義字體的大小。(4)FontUnits:取值為points(缺省值),normalized,inches,centimeters或pixels,定義了字體的大小。(5)FontWe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論