軟件-matlabgui圖形用戶界面_第1頁
軟件-matlabgui圖形用戶界面_第2頁
軟件-matlabgui圖形用戶界面_第3頁
軟件-matlabgui圖形用戶界面_第4頁
軟件-matlabgui圖形用戶界面_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

圖形用戶界面主要內(nèi)容圖形用戶界面的一般步驟圖形用戶界面設(shè)計(jì)圖形用戶界面設(shè)計(jì)工具應(yīng)用M函數(shù)文件實(shí)現(xiàn)圖形用戶界面1.圖形用戶界面

圖形用戶界面就是通過窗口、菜單、按鈕、文字說明等對象構(gòu)成一個(gè)美觀的界面,提供用戶利用鼠標(biāo)或鍵盤方便地實(shí)現(xiàn)操作。

MATLAB設(shè)計(jì)圖形用戶界面的方法有兩種:使用可視化的界面環(huán)境(圖形用戶界面設(shè)計(jì)工具)和通過編寫程序。

一般制作步驟界面制作包括界面設(shè)計(jì)和程序?qū)崿F(xiàn)。分析界面所要實(shí)現(xiàn)的主要功能,明確設(shè)計(jì)任務(wù);繪界面草圖,注意從使用者的角度來考慮界面布局;按構(gòu)思的草圖,上機(jī)制作靜態(tài)界面;編寫界面動(dòng)態(tài)功能程序。圖形用戶界面設(shè)計(jì)可視化的界面環(huán)境

MATLAB6.5版本提供的GUI設(shè)計(jì)工具較前面的版本有較大的改善,設(shè)計(jì)界面變化很大。打開GUI設(shè)計(jì)工具的方法有以下幾種:(1)選擇菜單“File”——“New”——“GUI”命令;(2)在指令窗口輸入以下命令:

guide

打開空白設(shè)計(jì)工作臺

guideFN

在工作臺中打開文件名為FN

的用戶界面注意:在guide指令作用下,待打開的文件名不分字母的大小寫。Matlab為GUI設(shè)計(jì)一共準(zhǔn)備了4種模板,分別是:BlankGUI(Default)(空白模板,默認(rèn));GUIwithUicontrols(帶控件對象的GUI模板);GUIwithAxesandMenu(帶坐標(biāo)軸與菜單的GUI模板);ModalQuestionDialog(帶模式問題對話框的GUI模板)。

當(dāng)用戶選擇不同的模板時(shí),在GUI設(shè)計(jì)模板界面的右邊就會顯示出與該模板對應(yīng)的GUI圖形。7.2圖形用戶界面設(shè)計(jì)(續(xù))如在指令窗鍵入:guide,則可得到如下GUI設(shè)計(jì)工具的啟動(dòng)界面:空白界面有控件的模板界面有軸對象和菜單的模板界面標(biāo)準(zhǔn)詢問窗口7.2圖形用戶界面設(shè)計(jì)(續(xù))

若激活打開已有界面文件(OpenExistingGUI)的屬性頁,則可通過打開文件瀏覽器(Browse)選定需打開文件并打開,主窗口則顯示最近打開的界面文件的列表。最近打開的界面文件列表打開文件瀏覽器圖形用戶界面設(shè)計(jì)窗口

圖形用戶界面GUI設(shè)計(jì)窗口由菜單欄、工具欄、控件工具欄以及圖形對象設(shè)計(jì)區(qū)等4個(gè)功能區(qū)組成。

在GUI設(shè)計(jì)模板中選中一個(gè)模板,然后單擊OK按鈕,就會顯示GUI設(shè)計(jì)窗口。選擇不同的GUI設(shè)計(jì)模式時(shí),在GUI設(shè)計(jì)窗口中顯示的結(jié)果是不一樣的。左圖為空白GUI模板情形菜單條編輯工具條控件模板區(qū)設(shè)計(jì)工作區(qū)GUI設(shè)計(jì)窗口的菜單欄有File、Edit、View、Layout、Tools和Help6個(gè)菜單項(xiàng),使用其中的命令可以完成圖形用戶界面的設(shè)計(jì)操作。

編輯工具在菜單欄的下方,提供了常用的工具;設(shè)計(jì)工具區(qū)位于窗口的左半部分,提供了設(shè)計(jì)GUI過程中所用的用戶控件;空間模板區(qū)是網(wǎng)格形式的用戶設(shè)計(jì)GUI的空白區(qū)域。

Matlab提供了一套可視化的創(chuàng)建圖形窗口的工具,使用圖形用戶界面開發(fā)環(huán)境可方便地創(chuàng)建GUI應(yīng)用程序,它可以根據(jù)用戶設(shè)計(jì)的GUI布局,自動(dòng)生成M文件的框架,用戶使用這一框架編制自己的應(yīng)用程序。一、圖形用戶界面開發(fā)環(huán)境(GUIDE)

Matlab提供了一套可視化的創(chuàng)建圖形用戶接口(GUI)的工具,包括:7.2圖形用戶界面設(shè)計(jì)(續(xù))

在工具欄主要提供了六個(gè)工具:對象對齊工具、菜單編輯器、文件編輯器、屬性編輯器、界面激活工具和對象瀏覽器,單擊這六個(gè)按鈕就會出現(xiàn)相應(yīng)的窗口。對象對齊工具菜單編輯器文件編輯器屬性編輯器對象瀏覽器運(yùn)行界面對象瀏覽器(ObjectBrowser)——用于獲得當(dāng)前Matlab圖形用戶界面程序中的全部對象信息,對象的類型,同時(shí)顯示控件的名稱和標(biāo)識,在控件上雙擊鼠標(biāo)可以打開該控件的屬性編輯器;布局編輯器(LayoutEdtor)——在圖形窗口中創(chuàng)建及布置圖形對象。布局編輯器是可以啟動(dòng)用戶界面的控制面板,上述工具都必須從布局編輯器中訪問,用guide命令可以啟動(dòng),或在啟動(dòng)平臺窗口中選擇GUIDE來啟動(dòng)布局編輯器;幾何排列工具(AlignmentTool)——調(diào)整各對象相互之間的幾何關(guān)系和位置;屬性查看器(PropertyInspector)——查詢并設(shè)置屬性值;菜單編輯器(MenuEditor)——?jiǎng)?chuàng)建、設(shè)計(jì)、修改下拉式菜單和快捷菜單;Tab順序編輯器(TabOrderEditor)——用于設(shè)置當(dāng)用戶按下鍵盤上的Tab鍵時(shí),對象被選中的先后順序。

在Matlab5中,

GUI的設(shè)計(jì)是以M文件的編程形式實(shí)現(xiàn)的,GUI的布局代碼存儲在M文件和MAT文件中,而在Matlab

6中有了很大的改變,Matlab

6將GUI的布局代碼存儲在FIG文件中,同時(shí)還產(chǎn)生一個(gè)M文件用于存儲調(diào)用函數(shù),在M文件中不再包含GUI的布局代碼,在開發(fā)應(yīng)用程序時(shí)代碼量大大減少。

用于從控件選擇板上選擇控件對象并放置到布局區(qū)去,布局區(qū)被激活后就成為圖形窗口。在命令窗口輸入GUIDE命令或點(diǎn)擊工具欄中的guide圖標(biāo)都可以打開空白的布局編輯器,在命令窗口輸入GUIDEfilename可打開一個(gè)已存在的名為filename圖形用戶界面。1.布局編輯器(Layouteditor)

將控件對象放置到布局區(qū)

用鼠標(biāo)選擇并放置控件到布局區(qū)內(nèi);移動(dòng)控件到適當(dāng)?shù)奈恢?;改變控件的大?。贿x中多個(gè)對象的方法。一個(gè)簡單的布局示例

如所建立的布局還沒有進(jìn)行存儲,可用File菜單下的SaveAs菜單項(xiàng)(或工具欄中的對應(yīng)項(xiàng)),按輸入的文件的名字,在激活圖形窗口的同時(shí)將存儲一對同名的M文件和帶有.fig擴(kuò)展名的FIG文件。

激活圖形窗口

運(yùn)行GUI程序

在命令窗口直接鍵入文件名或用openfig,open或hgload命令運(yùn)行GUI程序。

布局編輯器參數(shù)設(shè)置選File菜單下的Preferences菜單項(xiàng)打開參數(shù)設(shè)置窗口,點(diǎn)擊樹狀目錄中的GUIDE,即可以設(shè)置布局編輯器的參數(shù)。

布局編輯器的彈出菜單

在任一控件上按下鼠標(biāo)右鍵,會彈出一個(gè)菜單,通過該菜單可以完成布局編輯器的大部分操作。2.位置調(diào)整工具(Alignmenttool)

在選中多個(gè)對象后,可以方便的通過對象位置調(diào)整器調(diào)整對象間的對齊方式和距離。

對象位置調(diào)整器中的第一欄是垂直方向的位置調(diào)整,第二欄是水平方向的位置調(diào)整。

利用位置調(diào)整工具,可以對GUI對象設(shè)計(jì)區(qū)內(nèi)的多個(gè)對象的位置進(jìn)行調(diào)整。位置調(diào)整工具的打開方式有兩種:從GUI設(shè)計(jì)窗口的工具欄上選擇AlignObjects命令按鈕;選擇Tools菜單下的AlignObjects...菜單項(xiàng),就可以打開對象位置調(diào)整器。

利用對象屬性查看器,可以查看每個(gè)對象的屬性值,也可以修改、設(shè)置對象的屬性值。3.用屬性查看器設(shè)置控件屬性

打開屬性查看器(OpeningPropertyInspector)對象屬性查看器的打開方式有四種:從GUI設(shè)計(jì)窗口工具欄上選擇PropertyInspector命令按鈕;選擇View菜單下的PropertyInspector菜單項(xiàng);在控件對象上單擊鼠標(biāo)右鍵,選擇彈出菜單的PropertyInspector菜單項(xiàng)。在命令窗口中輸入inspect;

布置控件;定義文本框的屬性;定義坐標(biāo)軸的屬性;定義按鈕的屬性;定義復(fù)選框。

使用屬性查看器(UsingPropertyInspector)利用菜單編輯器,可以創(chuàng)建、設(shè)置、修改下拉式菜單和快捷菜單。選擇Tools菜單下的MenuEditor...子菜單,即可打開菜單編輯器。4.菜單編輯器(MenuEditor)菜單也可以通過編程實(shí)現(xiàn),方法為從GUI設(shè)計(jì)窗口的工具欄上選擇MenuEditor命令按鈕,打開菜單編輯程序。7.2.2創(chuàng)建用戶菜單1.菜單編輯在GUI設(shè)計(jì)工作臺的菜單條選擇“Tool”-”MenuEditor…”或單擊工具欄“MenuEditor”按鈕,就會出現(xiàn)菜單編輯器窗口。新建菜單新建子菜單菜單左、右移菜單上、下移刪除菜單填寫菜單名,如果在前面加“&”符號則加快捷鍵,當(dāng)運(yùn)行時(shí)第一個(gè)字母會加下劃線,以便用戶快速激活菜單項(xiàng)標(biāo)記分隔符初值是否已選輸入回調(diào)函數(shù)菜單編輯器包括菜單的設(shè)計(jì)和編輯,菜單編輯器有八個(gè)快捷鍵,可以利用它們?nèi)我馓砑踊騽h除菜單,可以設(shè)置菜單項(xiàng)的屬性,包括名稱(Label)、標(biāo)識(Tag)、選擇是否顯示分隔線(Separatorabovethisitem)、是否在菜單前加上選中標(biāo)記(Itemischecked)、調(diào)用函數(shù)(Callback)。

菜單編輯器左上角的第一個(gè)按鈕用于創(chuàng)建一級菜單項(xiàng)。第二個(gè)按鈕用于創(chuàng)建一級菜單的子菜單。

菜單編輯器的左下角有兩個(gè)按鈕,選擇第一個(gè)按鈕,可以創(chuàng)建下拉式菜單。選擇第二個(gè)按鈕,可以創(chuàng)建ContextMenu菜單。選擇它后,菜單編輯器左上角的第三個(gè)按鈕就會變成可用,單擊它就可以創(chuàng)建ContextMenu主菜單。在選中已經(jīng)創(chuàng)建的ContextMenu主菜單后,可以單擊第二個(gè)按鈕創(chuàng)建選中的ContextMenu主菜單的子菜單。與下拉式菜單一樣,選中創(chuàng)建的某個(gè)ContextMenu菜單,菜單編輯器的右邊就會顯示該菜單的有關(guān)屬性,可以在這里設(shè)置、修改菜單的屬性。

菜單編輯器左上角的第四個(gè)與第五個(gè)按鈕用于對選中的菜單進(jìn)行左移與右移,第六與第七個(gè)按鈕用于對選中的菜單進(jìn)行上移與下移,最右邊的按鈕用于刪除選中的菜單。通過uimenu命令創(chuàng)建菜單h_menu=uimenu(h_parent,’PropertyName’,ProperValue,…)>>h_menu=uimenu(h_fig,’lable’,’paint’)%創(chuàng)建菜單paint例子在后面(自學(xué)部分)5.對象瀏覽器(ObjectBrowsers)

利用對象瀏覽器,可以查看當(dāng)前設(shè)計(jì)階段的各個(gè)句柄圖形對象。可以在對象瀏覽器中選中一個(gè)或多個(gè)控件來打開該控件的屬性編輯器。對象瀏覽器的打開方式有:從GUI設(shè)計(jì)窗口的工具欄上選擇ObjectBrowser命令按鈕;選擇View菜單下的ObjectBrowser子菜單;在設(shè)計(jì)區(qū)域單擊鼠標(biāo)右鍵,選擇彈出菜單的ObjectBrowser。6.Tab順序編輯器(TabOrderEditor)

利用Tab順序編輯器(TabOrderEditor),可以設(shè)置用戶按鍵盤上的Tab鍵時(shí),對象被選中的先后順序。Tab順序編輯器的打開方式為:選擇Tools菜單下的TabOrderEditor...菜單項(xiàng),就可以打開Tab順序編輯器。從GUI設(shè)計(jì)窗口的工具欄上選擇TabOrderEditor...命令按鈕。1.GUI控件對象類型

控件對象是事件響應(yīng)的圖形界面對象。當(dāng)某一事件發(fā)生時(shí),應(yīng)用程序會做出響應(yīng)并執(zhí)行某些預(yù)定的功能子程序(Callback).2.控件對象的描述Matlab中的控件大致可分為兩種,一種為動(dòng)作控件,鼠標(biāo)點(diǎn)擊這些控件時(shí)會產(chǎn)生相應(yīng)的響應(yīng)。一種為靜態(tài)控件,是一種不產(chǎn)生響應(yīng)的控件,如文本框等。

每種控件都有一些可以設(shè)置的參數(shù),用于表現(xiàn)控件的外形、功能及效果,既屬性。屬性由兩部分組成:屬性名和屬性值,它們必須是成對出現(xiàn)的。二、控件對象及屬性詳見下表所示:

在GUI設(shè)計(jì)窗口創(chuàng)建圖形對象后,通過雙擊該對象,就會顯示該對象的屬性編輯器。常用控件

控件名PropertyName功能按鈕PushButton最常用的控件,用于響應(yīng)用戶的鼠標(biāo)單擊,按鈕上有說明文字說明其作用。切換按鈕ToggleButton當(dāng)單擊時(shí)會凹凸?fàn)顟B(tài)切換。單選按鈕RadioButton當(dāng)單擊時(shí)會用黑白點(diǎn)切換,總是成組出現(xiàn),多個(gè)單選按鈕互斥,一組中只有一個(gè)被選中。復(fù)選框CheckBox當(dāng)單擊時(shí)會用√切換,有選中、不選中和不確定等狀態(tài),總是成組出現(xiàn),多個(gè)復(fù)選框可同時(shí)選用。文本框EditText凹形方框,可隨意輸入和編輯單行和多行文字,并顯示出來。靜態(tài)文本框StaticText用于顯示文字信息,但不接受輸入。滾動(dòng)條Slider可以用圖示的方式顯示在一個(gè)范圍內(nèi)數(shù)值的大概值范圍,用戶可以移動(dòng)滾動(dòng)條改變數(shù)值。框架Frame將一組控件圍在框架中,用于裝飾界面。列表框ListBox顯示下拉文字列表,用戶可以從列表中選擇一項(xiàng)和多項(xiàng)。彈出式菜單PopupMenu相當(dāng)于文本框和列表框的組合,用戶可以從下拉列表中選擇。坐標(biāo)軸Axes用于繪制坐標(biāo)軸。

用戶可以在創(chuàng)建控件對象時(shí),設(shè)定其屬性值,未指定時(shí)將使用系統(tǒng)缺省值。3.控件對象的屬性(Attributesofcontrollerobject)

兩大類控件對象屬性:第一類是所有控件對象都具有的公共屬性,第二類是控件對象作為圖形對象所具有的屬性。控件對象的公共屬性Children取值為空矩陣,因?yàn)榭丶ο鬀]有自己的子對象;Tag取值為字符串,定義了控件的標(biāo)識值,在任何程序中都可以通過這個(gè)標(biāo)識值控制該控件對象;Type

取值為uicontrol,表明圖形對象的類型;Visible取值為on或off。UserDate取值為空矩陣,用于保存與該控件對象相關(guān)的重要數(shù)據(jù)和信息;Parent取值為某個(gè)圖形窗口對象的句柄,該句柄表明了控件對象所在的圖形窗口;BackgroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值;缺省值為淺灰色;Callback取值為字符串,可以是某個(gè)M文件名或一小段Matlab語句,當(dāng)用戶激活某個(gè)控件對象時(shí),應(yīng)用程序就運(yùn)行該屬性定義的子程序;Enable取值為on(缺省值),inactive和off;Extend取值為四元素矢量[0,0,width,height],記錄控件對象標(biāo)題字符的位置和尺寸;ForegroundColor取值為顏色的預(yù)定義字符或RGB數(shù)值,該屬性定義控件對象標(biāo)題字符的顏色;缺省值為黑色;Max,Min取值都為數(shù)值,缺省值分別為1和0;String取值為字符串矩陣或塊數(shù)組,定義控件對象標(biāo)題或選項(xiàng)內(nèi)容;Style取值可以是pushbutton(缺省值),radiobutton,checkbox,edit,text,slider,frame,popupmenu或listbox;Units取值可以是pixels(缺省值),normalized(相對單位),inches,centimeters(厘米)或points(磅);Value取值可以是矢量,也可以是數(shù)值,其含義及解釋依賴于控件對象的類型。控件對象的基本控制屬性FontAngle取值為normal(正體,缺省值),italic(斜體),oblique(方頭);FontName取值為控件標(biāo)題等字體的字庫名;FontSize取值為數(shù)值;FontUnits取值為points(缺省值),normalized,inches,centimeters或pixels;FontWeight取值為normal(缺省值),light,demi和bold,定義字符的粗細(xì);HorizontalAligment取值為left,center(缺省值)或right,定義控件對象標(biāo)題等的對齊方式??丶ο蟮男揎椏刂茖傩訪istboxTop取值為數(shù)量值,用于listbox控件對象;SliderStep取值為兩元素矢量[minstep,maxstep],用于slider控件對象;Selected取值為on或off(缺省值)

;SlectionHoghlight取值為on或off(缺省值)

。控件對象的輔助屬性BusyAction取值為cancel或queue(缺省值)

;ButtDownFun取值為字符串,一般為某個(gè)M文件名或一小段Matlab程序;Creatfun取值為字符串,一般為某個(gè)M文件名或一小段Matlab程序;DeletFun取值為字符串,一般為某個(gè)M文件名或一小段Matlab程序;HandleVisibility取值為on(缺省值),callback或off;Interruptible取值為on或off(缺省值)

。Callback管理屬性控件的常用屬性

創(chuàng)建控件以后,需要對控件的各種屬性進(jìn)行設(shè)置,大部分控件都具有以下屬性。(1)string屬性:用于顯示在控件上的字符串,起說明或提示作用。(2)callback屬性:回調(diào)函數(shù),與菜單的一樣。(3)enable屬性:表示該控件是否有效,”on“表示有效,”off“表示無效。(4)tooltipstring屬性:當(dāng)鼠標(biāo)放在控件上時(shí)顯示提示信息,為字符串。(5)字體屬性:包括fontname,fontsize等。(6)Tag屬性:控件的標(biāo)記,用于標(biāo)識控件。

用uicontrol命令創(chuàng)建控件h_control=uicontrol(h_Parent,’PropertyName’,ProperValue,…)例子在后面(自學(xué)部分)包括圖形用戶界面的設(shè)計(jì)和功能設(shè)計(jì)兩個(gè)方面。三、GUI程序設(shè)計(jì)

實(shí)現(xiàn)GUI的基本機(jī)制是對控件的屬性編程。在設(shè)計(jì)界面中選定需要編寫回調(diào)函數(shù)的對象,然后選擇菜單”View”-“ObjectCallbacks”,就會出現(xiàn)4個(gè)子菜單,都是用來編寫回調(diào)函數(shù)的。當(dāng)選擇各選單項(xiàng)時(shí),MATLAB會提醒用戶保存設(shè)計(jì)的界面,然后打開M文件編輯器/調(diào)試器,可看到機(jī)器自動(dòng)生成了一個(gè)函數(shù)文件,用戶即可在該文件中帶%--標(biāo)記的行填寫回調(diào)指令,其余指令用戶不必也不能更改。例10

使用PushButton按鈕與靜態(tài)文本框設(shè)計(jì)GUI,在窗口中顯示單擊按鈕次數(shù)。(1)

在界面上安裝一個(gè)命令按鈕和一個(gè)靜態(tài)文本框(2)

使用對象的屬性窗口設(shè)置控件的屬性

實(shí)現(xiàn)GUI的基本機(jī)制是對控件的屬性編程。在設(shè)計(jì)界面中選定需要編寫回調(diào)函數(shù)的對象,然后選擇菜單”View”-“ObjectCallbacks”,就會出現(xiàn)4個(gè)子菜單,都是用來編寫回調(diào)函數(shù)的。

當(dāng)選擇各選單項(xiàng)時(shí),MATLAB會提醒用戶保存設(shè)計(jì)的界面,然后打開M文件編輯器/調(diào)試器,可看到機(jī)器自動(dòng)生成了一個(gè)函數(shù)文件,用戶即可在該文件中帶%--標(biāo)記的行填寫回調(diào)指令,其余指令用戶不必也不能更改?;卣{(diào)函數(shù):三、GUI程序設(shè)計(jì)(界面設(shè)計(jì)和功能設(shè)計(jì))圖形用戶界面設(shè)計(jì)工具應(yīng)用例:利用GUI工具設(shè)計(jì)用戶界面。該界面具有以下功能:(1)在編輯框中,可輸入表示阻尼比的標(biāo)量或“行數(shù)組”

數(shù)值,并在按【enter】鍵后,在軸上畫出相應(yīng)的藍(lán)色曲線(坐標(biāo)范圍:X軸[0,15];Y軸[0,2])。(2)在點(diǎn)擊【Gridon】或【Gridoff】鍵時(shí),在軸上畫出或刪除“分格線”;缺省時(shí)無分格線。(3)在菜單【Options】下,有2個(gè)下拉菜單【Boxon】和【Boxoff】;缺省時(shí)為Boxoff狀態(tài)。(4)所設(shè)計(jì)的界面和其上圖形對象、控件對象都按比例縮放。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))界面最終效果圖如下所示:圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))

由于本例的設(shè)計(jì)界面清晰、要求明確,所以無需進(jìn)行功能分析和繪制草圖,而可直接進(jìn)入界面制作階段。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))

使用“guide”命令啟動(dòng)GUI界面,選擇“BlankGUI”出現(xiàn)GUI設(shè)計(jì)工作臺,調(diào)整圖形大小,將界面窗口左邊的控件模板區(qū)中的控件拖放到設(shè)計(jì)工作區(qū)中。

放置以下控件:一個(gè)坐標(biāo)軸、兩個(gè)靜態(tài)文本框、一個(gè)可編輯文本框、兩個(gè)按鈕;然后打開對象對齊工具對齊各控件,界面布局如下圖。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))2.設(shè)置控件屬性

雙擊工作區(qū)及控件可引出圖形窗和相應(yīng)控件的“屬性編輯框(PropertyInspector)”。

在圖形窗的屬性編輯框中,設(shè)置如下屬性值:NameMyguil%圖形窗的名稱Resizeon%圖形窗可以縮放Tagfiguer1

%生成handles.figure1域存放圖形窗句柄圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))在軸屬性編輯框中,設(shè)置如下屬性值:Unitsnormalized%采用相對度量單位,縮放時(shí)保持比例Boxoff%坐標(biāo)軸不封閉Tagaxes1%生成handles.axes1域存放軸句柄XLim[0,15]%X軸范圍YLim[0,2]%Y軸范圍

圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))在圖形區(qū)上方的靜態(tài)文本的屬性編輯框中,設(shè)置如下屬性值:Fontsize0.696%字體大小FontUnitsnormaliszed%采用相對度量單位,縮放時(shí)保持字體比例String

歸一化二階系統(tǒng)的階躍響應(yīng)曲線%顯示在界面上的字符Tagtitle_text%生成handles.title_text域存放靜態(tài)文本句柄HorizontalAlignmentCenter%文字中心對齊Unitsnormalized%采用相對度量單位,縮放時(shí)保持該區(qū)比例

圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))在可編輯文本上方的靜態(tài)文本的屬性編輯框中,設(shè)置如下屬性值:Fontsize0.351%字體大小FontUnitsnormaliszed%采用相對度量單位,縮放時(shí)保持字體比例HorizontalAlignmentCenter%文字中心對齊String系統(tǒng)阻尼比

%顯示在界面上的字符Tagedit_text%生成handles.edit_text域存放靜態(tài)文本句柄Unitsnormalized%采用相對度量單位,縮放時(shí)保持該區(qū)比例圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))在可編輯文本的屬性編輯框中,設(shè)置如下屬性值:Fontsize0.626%字體大小FontUnitsnormaliszed%采用相對度量單位,縮放時(shí)保持字體比例HorizontalAlignmentCenter%文字中心對齊String%在界面上顯示為空白Tagzeta_edit%生成handles.zeta_edit域存放彈出式選單句柄Unitsnormalized%采用相對度量單位,縮放時(shí)保持該區(qū)比例圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))在上按鍵的屬性編輯框中,設(shè)置如下屬性值:Fontsize0.485%字體大小FontUnitsnormaliszed%采用相對度量單位,縮放時(shí)保持字體比例HorizontalAlignmentCenter%文字中心對齊StringGridon%在按鍵上顯示GridonTagGridOn_push%生成handles.GridOn_push域存放該鍵句柄Unitsnormalized%采用相對度量單位,縮放時(shí)保持該鍵比例圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))在下按鍵的屬性編輯框中,設(shè)置如下屬性值:Fontsize0.485%字體大小FontUnitsnormaliszed%采用相對度量單位,縮放時(shí)保持字體比例HorizontalAlignmentCenter%文字中心對齊StringGridoff%在按鍵上顯示GridoffTagGridOff_push%生成handles.GridOff_push域存放該鍵句柄Unitsnormalized%采用相對度量單位,縮放時(shí)保持該鍵比例

圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))3.精細(xì)調(diào)整控件的大小及其相對位置直接拖拉控件調(diào)整其大??;通過對象對齊工具將控件擺放整齊。4.創(chuàng)建菜單

點(diǎn)擊“菜單編輯器”圖標(biāo),引出空白菜單編輯對話窗,再點(diǎn)擊該對話窗最左上方的“新菜單NewMenu”圖標(biāo),在左側(cè)空白窗口中,出現(xiàn)”Untitled1”圖標(biāo);點(diǎn)擊此圖標(biāo)則在右側(cè)引出填寫欄,在“l(fā)able”中填寫Options;在“Tag”中填寫options,于是左側(cè)的”Untitled1”圖標(biāo)變成“Options”圖標(biāo),表示此菜單已生成。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))先點(diǎn)亮左側(cè)的“Option”圖標(biāo),再點(diǎn)擊菜單編輯對話窗上的“新菜單項(xiàng)NewMenuItem”圖標(biāo),就引出等待定義的菜單項(xiàng);在右側(cè)的“Label”中填寫B(tài)oxon,在“Tag”中填寫box_on。重復(fù)該小步操作,建立另一個(gè)菜單項(xiàng)Boxoff。注意:菜單編輯對話窗上的“Callback”不要填寫,機(jī)器自動(dòng)生成。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))5.界面的激活和回調(diào)函數(shù)的生成

點(diǎn)擊工作臺上的”運(yùn)行界面“的工具圖標(biāo),會出現(xiàn)一個(gè)詢問對話框,當(dāng)按提示對以上的設(shè)計(jì)進(jìn)行存儲以后,就會引出2個(gè)界面:名為Myguil的(待激活的)圖形用戶界面;展示名為Myguil的(待填寫回調(diào)指令的)M函數(shù)文件的文件編輯器界面。同時(shí),在當(dāng)前目錄或給定目錄上,由MATLAB自動(dòng)生成了2個(gè)文件,即Myguil.fig和Myguil.m。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))在Myguil.m文件中,填寫回調(diào)指令:functionvarargout=zeta_edit_Callback(hObject,eventdata,handles,varargin)z=str2num(get(handles.zeta_edit,‘String’))%從編輯框中獲取zeta數(shù)據(jù)t=0:0.1:15;%設(shè)置時(shí)間采樣數(shù)組cla%clearcurrentaxisfork=1:length(z)y(:,k)=step(1,[1,2*z(k),1],t);%計(jì)算階躍輸出

line(t,y(:,k));%繪制曲線end7.3圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))Functionvarargout=GridOn_push_Callback(hObject,eventdata,handles,varargin)gridon%配合Gridon按鍵操作的指令functionvarargout=GridOff_push_Callback(hObject,eventdata,handles,varargin)gridoff%配合Gridoff按鍵操作的指令圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))functionvarargout=box_on_Callback(hObject,eventdata,handles,varargin)boxon%配合菜單Boxon的操作指令set(handles.box_on,‘enable’,‘off’)%使菜單項(xiàng)Boxon失能set(handles.box_off,‘enable’,‘on’)%使菜單項(xiàng)Boxoff使能

圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))functionvarargout=box_off_Callback(hObject,eventdata,handles,varargin)boxoff%配合菜單Boxoff的操作指令set(handles.box_off,‘enable’,‘off’)%使菜單項(xiàng)Boxoff失能

set(handles.box_on,‘enable’,‘on’)%使菜單項(xiàng)Boxon使能圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))注意:在填寫回調(diào)函數(shù)時(shí),只有帶%---標(biāo)記的那些行指令是用戶為滿足設(shè)計(jì)要求而填寫的,其余指令都是機(jī)器自動(dòng)生成的,用戶不必也不能更改6.圖形用戶界面的使用經(jīng)過以上幾個(gè)步驟生成的圖形用戶界面已經(jīng)可以使用了,只要Myguil.m和Myguil.fig在當(dāng)前目錄或在MATLAB搜索路徑上,那么在指令窗運(yùn)行Myguil就能使用該界面。生成的界面如下圖所示:

圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))

圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))例7.2設(shè)計(jì)一個(gè)GUI,實(shí)現(xiàn)計(jì)算器的功能步驟一:界面功能分析該計(jì)算器能完成數(shù)字的四則運(yùn)算及部分常用的科學(xué)計(jì)算,如sin,cos,log等。步驟二:繪界面草圖可有多種風(fēng)格的界面。

圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))草圖一:數(shù)值顯示區(qū)(參加計(jì)算的數(shù)值及計(jì)算結(jié)果)數(shù)字按鈕(0~9十個(gè)數(shù)字及小數(shù)點(diǎn))代表+,-,*,/及sin,cos,log,log10運(yùn)算的按鈕開始計(jì)算及清零按鈕圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))草圖二:計(jì)算式第一個(gè)數(shù)字的編輯顯示計(jì)算式兩個(gè)數(shù)字間的計(jì)算關(guān)系計(jì)算式第二個(gè)數(shù)字的編輯顯示計(jì)算結(jié)果顯示區(qū)代表+,-,*,/及and,or,xor,y^x等運(yùn)算的按鈕開始計(jì)算及清零按鈕圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))草圖三:表達(dá)式編輯顯示區(qū)(格式和MATLAB命令相同)計(jì)算結(jié)果顯示區(qū)開始計(jì)算及清零按鈕圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))步驟三:設(shè)計(jì)界面(選擇草圖一)初步布局打開GUI工作臺,通過用鼠標(biāo)拖拉“工作區(qū)”右下角的“小黑塊”使工作區(qū)的大小合適,然后根據(jù)草圖從控件選擇區(qū)選擇相應(yīng)的控件拖拉到工作區(qū)的相應(yīng)位置。效果圖如下頁所示:圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))2.修改控件屬性1)雙擊設(shè)計(jì)工作區(qū)的空白部分,打開圖形窗的屬性框,設(shè)置屬性如下:

MenuBarnone%圖形窗不使用標(biāo)準(zhǔn)菜單

NameExperiment1%圖形窗名稱

Resizeoff%圖形窗不能縮放

TagmainWnd

%生成handles.mainWnd域存放圖形窗句柄圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))2)靜態(tài)文本編輯框的屬性設(shè)置。以”expression”文本框?yàn)槔?/p>

FontSize15%字體大小

Fontunitspoint%字體大小的度量單位

HorizontalAlignmentCenter%對齊方式

StringExpression%待顯示的字符

Tagtext1

%生成handles.text1存放該靜態(tài)文本框的句柄

Unitspoint%文本框度量單位

圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))3)可編輯文本框的屬性設(shè)置

Sting0%初始狀態(tài)下顯示數(shù)字0

TagpExp%可編輯文本框的句柄

其它與靜態(tài)文本框相同圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))注:

Units或FontUnits可選擇:inches(英寸),centimeters(厘米),normalized(按比例縮放),points(點(diǎn)陣),pixels(像素),characters(字符)。如果選擇normalized,那么當(dāng)resize設(shè)為on時(shí),控件或字體大小隨著整個(gè)窗口的縮放而改變。

水平對齊方式

HorizontalAlignment可以是left,center,right。

控件句柄Tag有默認(rèn)值,建議修改為帶有具體含義的字符串,以增加程序可讀性和方便回調(diào)函數(shù)調(diào)用。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))4)單功能按鈕屬性設(shè)置。以按鈕“1”為例:

String1Tagp1其它和靜態(tài)文本框相同。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))3.

創(chuàng)建菜單創(chuàng)建一個(gè)“操作”菜單,帶兩個(gè)下拉選單“計(jì)算”和“清零”。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))步驟四:激活界面,填寫回調(diào)函數(shù)保存靜態(tài)界面后,利用工具欄上的運(yùn)行界面按鈕激活界面,同時(shí),機(jī)器自動(dòng)生成了exp1.fig和exp1.m兩個(gè)文件。

打開exp1.m文件,可看到自動(dòng)生成的回調(diào)函數(shù),該函數(shù)的命名利用對象句柄進(jìn)行區(qū)分,沒有任何執(zhí)行語句。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))回調(diào)函數(shù):Tag_Callback(hObject,eventdata,handles)

通過加入自己的處理語句,才可實(shí)現(xiàn)所需的功能。

其中,hObject是該控件的句柄;evendata是備用參數(shù),目前沒有定義;handles是用戶數(shù)據(jù),本身是一個(gè)構(gòu)架數(shù)組,存放了當(dāng)前窗口所有對象的句柄,包括圖形窗本身、所有控件和菜單的句柄,并且可以增加一些域用來傳遞用戶數(shù)據(jù)。

利用guidata(H,handles)可以更新H的用戶數(shù)據(jù)。對本例來說,先需要定義幾個(gè)用戶變量,以便記錄參加運(yùn)算的數(shù)值,進(jìn)行計(jì)算。圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))function

exp1_OpeningFcn(hObject,eventdata,handles,varargin) handles.output=hObject;

handles.s_Exp=‘’;

%以字符串的形式記錄計(jì)算表達(dá)式

handles.s_Num=‘’;

%以字符串的形式記錄編輯框中要顯示的數(shù)值

handles.i=1; %s_Exp的計(jì)數(shù)器

handles.j=1; %s_Num的計(jì)數(shù)器

handles.flag=0;

%用來區(qū)分四則運(yùn)算和函數(shù)運(yùn)算的標(biāo)志

%Updatehandlesstructure

guidata(hObject,handles);圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))數(shù)字按鈕的回調(diào)函數(shù),以數(shù)字1按鈕的回調(diào)函數(shù)為例function

p1_Callback(hObject,eventdata,handles) handles.s_Exp(handles.i)='1'; handles.s_Num(handles.j)='1'; handles.i=handles.i+1; handles.j=handles.j+1; guidata(handles.mainWnd,handles); set(handles.pExp,'string',handles.s_Num)圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))

四則運(yùn)算的回調(diào)函數(shù),以“+”為例

function

pAdd_Callback(hObject,eventdata,handles)

if

handles.flaghandles.s_Exp(handles.i)=')';handles.flag=0;handles.i=handles.i+1;

handles.j=handles.j+1;

endhandles.s_Exp(handles.i)='+';handles.s_Num(handles.j)='+';handles.i=handles.i+1;handles.j=handles.j+1;guidata(handles.mainWnd,handles);set(handles.pExp,'string',handles.s_Num)圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))其它運(yùn)算的回調(diào)函數(shù),以“sin”為例functionpSin_Callback(hObject,eventdata,handles)handles.s_Exp(handles.i:handles.i+3)='sin(';handles.flag=1;handles.s_Num='sin(';handles.i=handles.i+4;handles.j=handles.j+4;guidata(handles.mainWnd,handles);set(handles.pExp,'string',handles.s_Num)圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))Reset按鈕的回調(diào)函數(shù),和“清零”菜單的回調(diào)函數(shù)一樣。function

pCle_Callback(hObject,eventdata,handles) handles.s_Exp=''; handles.s_Num=''; handles.i=1; handles.j=1; handles.flag=0; guidata(handles.mainWnd,handles) set(handles.pExp,'string','')圖形用戶界面設(shè)計(jì)工具應(yīng)用(續(xù))Calculate按鈕的回調(diào)函數(shù),和“計(jì)算”菜單的回調(diào)函數(shù)一樣。function

pDon_Callback(hObject,eventdata,handles)try

if

handles.flaghandles.s_Exp(handles.i)=')';handles.s_Num(handles.j)=')';handles.flag=0;handles.i=handles.i+1;handles.j=handles.j+1;endeval(['s=',handles.s_Exp,';']);

set(handles.pExp,'string',[handles.s_Num,'=',num2str(s)])catcherrordlg('Theinputdon''tfitthecalculation')endM函數(shù)文件實(shí)現(xiàn)圖形用戶界面(自學(xué))h_control=uicontrol(h_Parent,'PropertyName',ProperValue,…)創(chuàng)建控件h_menu=uimenu(h_parent,'PropertyName',ProperValue,…)

其中,h_parent

為菜單父句柄,可以是圖形窗或上一級菜單,PropertyName和ProperValue總是成對出現(xiàn),設(shè)置菜單的一個(gè)屬性M函數(shù)文件實(shí)現(xiàn)圖形用戶界面(續(xù))現(xiàn)場菜單制作命令Hm=uicontextmenu;H=uimenu(Hm,'PropertyName',ProperValue,…)Set(H_parent,'uicontextmenu',Hm)其中,H_parent是與這個(gè)現(xiàn)場菜單相關(guān)聯(lián)的對象的句柄,利用H=uimenu和Set(H)指令可以查看菜單的屬性列表??丶ο蟮慕ⅲㄗ詫W(xué))Matlab提供了用于建立控件對象的函數(shù)uicontrol,其調(diào)用格式為:

對象句柄=uicontrol(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…)其中各個(gè)屬性名及可取的值和后面將介紹的uimenu函數(shù)相似,但也不盡相同。

在對話框上有各種各樣的控件,利用這些控件可以實(shí)現(xiàn)有關(guān)控制。例1

建立數(shù)制轉(zhuǎn)換對話框。在左邊輸入一個(gè)十進(jìn)制整數(shù)和2~16之間的數(shù),單擊“轉(zhuǎn)換”按鈕能在右邊得到十進(jìn)制數(shù)所對應(yīng)的2~16進(jìn)制字符串,單擊“退出”按鈕退出對話框。程序如下:hf=figure('Color',[0,1,1],'Position',[100,200,400,200],...'Name','數(shù)制轉(zhuǎn)換','NumberTitle','off','MenuBar','none');uicontrol(hf,'Style','Text','Units','normalized',...'Position',[0.05,0.8,0.45,0.1],'Horizontal','center',...'String','輸入框','Back',[0,1,1]);uicontrol(hf,'Style','Text','Position',[0.5,0.8,0.45,0.1],...'Units','normalized','Horizontal','center',...'String','輸出框','Back',[0,1,1]);uicontrol(hf,'Style','Frame','Position',[0.04,0.33,0.45,0.45],...'Units','normalized','Back',[1,1,0]);uicontrol(hf,'Style','Text','Position',[0.05,0.6,0.25,0.1],...'Units','normalized','Horizontal','center',...'String','十進(jìn)制數(shù)','Back',[1,1,0]);uicontrol(hf,'Style','Text','Position',[0.05,0.4,0.25,0.1],...'Units','normalized','Horizontal','center',...'String','2~16進(jìn)制','Back',[1,1,0]);he1=uicontrol(hf,'Style','Edit','Position',[0.25,0.6,0.2,0.1],...'Units','normalized','Back',[0,1,0]);he2=uicontrol(hf,'Style','Edit','Position',[0.25,0.4,0.2,0.1],...'Units','normalized','Back',[0,1,0]);uicontrol(hf,'Style','Frame','Position',[0.52,0.33,0.45,0.45],...'Units','normalized','Back',[1,1,0]);ht=uicontrol(hf,'Style','Text','Position',[0.6,0.5,0.3,0.1],...'Units','normalized','Horizontal','center','Back',[0,1,0]);COMM=['n=str2num(get(he1,''String''));','b=str2num(get(he2,''String''));',...'dec=trdec(n,b);','set(ht,''string'',dec);'];uicontrol(hf,'Style','Push','Position',[0.18,0.1,0.2,0.12],...'String','轉(zhuǎn)換','Units','normalized','Call'M);uicontrol(hf,'Style','Push','Position',[0.65,0.1,0.2,0.12],...'String','退出','Units','normalized','Call','close(hf)');程序調(diào)用了trdec.m函數(shù)文件,該函數(shù)的作用是將任意十進(jìn)制整數(shù)轉(zhuǎn)換為2~16進(jìn)制字符串。trdec.m函數(shù)文件如下:functiondec=trdec(n,b)ch1='ABCDEF';%十六進(jìn)制的16個(gè)符號k=1;whilen~=0%不斷除某進(jìn)制基數(shù)取余直到商為0p(k)=rem(n,b);n=fix(n/b);k=k+1;endk=k-1;strdec='';whilek>=1%形成某進(jìn)制數(shù)的字符串kb=p(k);strdec=strcat(strdec,ch1(kb+1:kb+1));k=k-1;enddec=strdec;所建立的數(shù)制轉(zhuǎn)換對話框如下:例2

建立圖形演示對話框。在編輯框輸入繪圖命令,單擊“繪圖”按鈕能在左邊坐標(biāo)軸得到所對應(yīng)的圖形,彈出框提供色圖控制,列表框提供坐標(biāo)網(wǎng)格線和坐標(biāo)邊框控制。程序如下:clf;set(gcf,'Unit','normalized','Position',[0.2,0.3,0.65,0.35]);set(gcf,'Menubar','none','Name','圖形演示','NumberTitle','off');axes('Position',[0.05,0.15,0.55,0.7]);uicontrol(gcf,'Style','text','Unit','normalized',...'Posi',[0.63,0.85,0.2,0.1],'String','輸入繪圖命令','Horizontal','center');hedit=uicontrol(gcf,'Style','edit','Unit','normalized','Posi',[0.63,0.15,0.2,0.68],...'Max',2);%Max取2,使Max-Min>1,從而允許多行輸入

hpopup=uicontrol(gcf,'Style','popup','Unit','normalized',...'Posi',[0.85,0.8,0.15,0.15],'String','Spring|Summer|Autumn|Winter');hlist=uicontrol(gcf,'Style','list','Unit','normalized',...'Posi',[0.85,0.55,0.15,0.25],'String','Gridon|Gridoff|Boxon|Boxoff');hpush1=uicontrol(gcf,'Style','push','Unit','normalized',...'Posi',[0.85,0.35,0.15,0.15],'String','繪圖');uicontrol(gcf,'Style','push','Unit','normalized',...'Posi',[0.85,0.15,0.15,0.15],'String','關(guān)閉','Call','closeall');set(hpush1,'Call','COMM(hedit,hpopup,hlist)');set(hlist,'Call','COMM(hedit,hpopup,hlist)');set(hpopup,'Call','COMM(hedit,hpopup,hlist)');

程序調(diào)用了COMM.m函數(shù)文件,

該函數(shù)文件如下:functionCOMM(hedit,hpopup,hlist)com=get(hedit,'String');n1=get(hpopup,'Value');n2=get(hlist,'Value');if~isempty(com)%編輯框輸入非空時(shí)

eval(com');%執(zhí)行從編輯框輸入的命令

chpop={'spring','summer','autumn','winter'};chlist={'gridon','gridoff','boxon','boxoff'};colormap(eval(chpop{n1}));eval(chlist{n2});end所建立的圖形演示對話框如右圖所示:菜單設(shè)計(jì)(利用函數(shù)建立)(自學(xué))1.建立用戶菜單Hm=uimenu(Hp,屬性名1,屬性值1,屬性名2,屬性值2,…)功能:創(chuàng)建句柄值為Hm的自定義的用戶菜單。其中Hp為其父對象的句柄,屬性名和屬性值構(gòu)成屬性二元對,定義用戶菜單的屬性。建立自定義的用戶菜單的函數(shù)為uimenu,格式為:

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

因其調(diào)用方法不同,該函數(shù)可以用于建立一級菜單項(xiàng)和子菜單項(xiàng)。建立一級菜單項(xiàng)的函數(shù)調(diào)用格式為:一級菜單項(xiàng)句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…)建立子菜單項(xiàng)的函數(shù)調(diào)用格式為:2.菜單對象常用屬性

菜單對象除具有Children(子對象),Parent(父對象),Tag(標(biāo)簽),Type(類型),UserData(用戶數(shù)據(jù)),Enable(使能)和Visible(可見性)等公共屬性,還有一些常用的特殊屬性,如回調(diào)(callback)屬性和菜單名(label)。另外,用戶菜單的外觀有四個(gè)屬性:Position(位置),Separator(分隔線),checked(檢錄符)和ForeGroundColor(前景顏色)。Tag屬性Tag屬性的取值是字符串,它定義了該菜單對象的一個(gè)標(biāo)識值。定義了Tag屬性后,在任何程序中都可以通過這個(gè)標(biāo)識值找出該菜單對象。Type屬性Type屬性的取值總是uimenu,這個(gè)屬性值標(biāo)明圖形對象的類型。對菜單對象,其類型就是uimenu,用戶不能改寫這個(gè)屬性。例3建立“圖形演示系統(tǒng)”菜單。菜單條中含有3個(gè)菜單項(xiàng):Plot、Option和Quit。Plot中有SineWave和CosineWave兩個(gè)子菜單項(xiàng),分別控制在本圖形窗口畫出正弦和余弦曲線。Option菜單項(xiàng)的內(nèi)容為:Gridon和Gridoff控制給坐標(biāo)軸加網(wǎng)格線,Boxon和Boxoff控制給坐標(biāo)軸加邊框,而且這4項(xiàng)只有在畫有曲線時(shí)才是可選的。FigureColor控制圖形窗口背景顏色。Quit控制是否退出系統(tǒng)。程序如下:UserData屬性UserData屬性的取值是一個(gè)矩陣,缺省值為空矩陣,用戶可以在這個(gè)屬性中保存與該菜單對象相關(guān)的重要數(shù)據(jù)或信息,借此可以達(dá)到傳遞數(shù)據(jù)或信息的目的。可以用set和get函數(shù)訪問該屬性。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)','NumberTitle','off','MenuBar','none');%定義Plot菜單項(xiàng)hplot=uimenu(gcf,'Label','&Plot');uimenu(hplot,'Label','SineWave','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'');']);uimenu(hplot,'Label','CosineWave','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');hgon=uimenu(hoption,'Label','&Grigon','Call','gridon','Enable','off');hgoff=uimenu(hoption,'Label','&Grigoff','Call','gridoff','Enable','off');hbon=uimenu(hoption,'Label','&Boxon','separator','on','Call','boxon','Enable','off');hboff=uimenu(hoption,'Label','&Boxoff','Call','boxoff','Enable','off');hfigcor=uimenu(hoption,'Label','&FigureColor','Separator','on');uimenu(hfigcor,'Label','&Red','Accelerator','r','Call','set(gcf,''Color'',''r'');');uimenu(hfigcor,'Label','&Blue','Accelerator','b','Call','set(gcf,''Color'',''b'');');uimenu(hfigcor,'Label','&Yellow','Call','set(gcf,''Color'',''y'');');uimenu(hfigcor,'Label','&White','Call','set(gcf,''Color'',''w'');');%定義Quit菜單項(xiàng)

uimenu(gcf,'Label','&Quit','Call','close(gcf)');所建立的“圖形演示系統(tǒng)”菜單如下:

菜單條中含有File和Help兩個(gè)菜單項(xiàng)。如果選擇File中的New選項(xiàng),則將顯示NewItem字樣,如果選擇File中的Open選項(xiàng),則將顯示出OpenItem字樣。File中的Save菜單項(xiàng)初始時(shí)處于禁選狀態(tài),在選擇Help選項(xiàng)之后將此菜單項(xiàng)恢復(fù)成可選狀態(tài),如果選擇File中的Save選項(xiàng),則將出現(xiàn)一個(gè)新的菜單(三級菜單),其中共有兩個(gè)子菜單項(xiàng)Textfile和Graphicsfile,如果選擇第1項(xiàng),則將變量k1和k2分別賦為0和1,然后調(diào)用file01.m文件來進(jìn)行相應(yīng)的處理(該文件需要另行編寫),如果選擇第2項(xiàng),則將變量k1和k2分別賦為1和0,然后調(diào)用file10.m文件來進(jìn)行相應(yīng)的處理(該文件也需要另行編寫)。如果選擇File中的SaveAs選項(xiàng),則將顯示SaveAsItem字樣。如果選擇File中的Exit選項(xiàng),則將關(guān)閉當(dāng)前窗口。如果選擇Help中About…選項(xiàng),則將顯示HelpItem字樣,并將Save菜單設(shè)置成可選狀態(tài)。例4

建立一個(gè)菜單系統(tǒng)。程序如下:screen=get(0,'ScreenSize');W=screen(3);H=screen(4);hf=figure('Color',[1,1,1],'Position',[1,1,0.4*W,0.3*H],...'Name','菜單設(shè)計(jì)示例一','NumberTitle','off','MenuBar','none');hfile=uimenu(hf,'label','&File');hhelp=uimenu(hf,'label','&H

溫馨提示

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

評論

0/150

提交評論