Matlab的圖形用戶界面GUI.ppt_第1頁
Matlab的圖形用戶界面GUI.ppt_第2頁
Matlab的圖形用戶界面GUI.ppt_第3頁
Matlab的圖形用戶界面GUI.ppt_第4頁
Matlab的圖形用戶界面GUI.ppt_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1,第七章Matlab的圖形用戶界面GUI,GUI設(shè)計工具簡介GUI向?qū)гO(shè)計GUI程序設(shè)計,2,第一節(jié)GUI設(shè)計工具簡介,通常在開發(fā)一個應(yīng)用程序時都會盡量做到界面友好、直觀。最常用的方法就是使用圖形用戶界面。在Matlab中,圖形用戶界面是一個包含多種對象的圖形窗口。用戶必須對功能對象進(jìn)行界面布局和編程,從而使用戶在激活GUI的功能對象時能夠執(zhí)行相應(yīng)的行為。Matlab為用戶開發(fā)圖形界面提供了一個方便、高效的集成開發(fā)環(huán)境GUIDE(GraphicUserInterfaceDevelopmentEnvironment)。GUIDE主要是一個界面設(shè)計工具集,Matlab將所有GUI的控件都集成在這個環(huán)境中并提供界面外觀、屬性和行為響應(yīng)方式的設(shè)置方法。GUIDE將用戶設(shè)計好的GUI界面保存在一個FIG文件中,同時還自動生成一個包含GUI初始化和組件界面布局控制代碼的M文件。這個M文件為實現(xiàn)回調(diào)函數(shù)(當(dāng)用戶激活GUI某一個組件時執(zhí)行的函數(shù))提供了一個參考框架,這樣既簡化了GUI應(yīng)用程序的創(chuàng)建工作,用戶又可以直接使用這個框架來編寫自己的函數(shù)代碼。,3,整個GUI的實現(xiàn)過程可以分為以下幾步:使用界面設(shè)計編輯器進(jìn)行GUI界面布局設(shè)計;理解應(yīng)用程序M文件中所使用的編程技術(shù);編寫GUI組件行為響應(yīng)控制(即回調(diào)函數(shù))代碼。一、啟動GUIDE在Matlab中,GUIDE提供了多種設(shè)計模板以方便用戶使用GUI。這些模板均包含相關(guān)的回調(diào)函數(shù),用戶可以打開它所對應(yīng)的M文件,看到它們的工作方式,或修改相應(yīng)的函數(shù),從而實現(xiàn)自己需要的功能。在Matlab中,可以通過如下兩種方法來訪問模板:直接輸入“guide”命令,打開如圖7-1所示的界面;通過File菜單中的New選項也可以打開GUI模板界面。,4,圖7-1進(jìn)入GUI的初始界面,5,在創(chuàng)建新的GUI時,Matlab提供了空白模板、帶有控制按鈕的模板、帶有坐標(biāo)軸和菜單的模板以及問答式對話框4種模板。其中空白模板如圖7-2所示:,圖7-2空白界面編輯器外觀圖,6,二、用戶界面控件對象介紹,在空白模板中GUIDE提供了用戶界面控件以及界面設(shè)計工具集來實現(xiàn)用戶界面的創(chuàng)建工作,用戶界面控件分布在界面編輯器的左側(cè),下面我們對各控件加以介紹。:按鈕(PushButton),是小的矩形面,在其上面標(biāo)有說明該按鈕功能的文本。將鼠標(biāo)指針移動至按鈕,單擊鼠標(biāo),按鈕被按下隨即自動彈起,并執(zhí)行回調(diào)程序。按鈕的“Style”屬性的默認(rèn)值是“pushbotton”。,7,:開關(guān)按鈕(ToggleButton)和一般按鈕形狀相同,區(qū)別在于它有兩種狀態(tài),用鼠標(biāo)單擊按鈕,它會從一種狀態(tài)變成另一種狀態(tài),并執(zhí)行相應(yīng)的回調(diào)程序(兩種狀態(tài)各對應(yīng)不同的回調(diào)程序)。按鈕“開”時,Value屬性的值為在Max屬性中指定的值;按鈕“關(guān)”時,Value屬性的值為在Min屬性中指定的值。按鈕的“Style”屬性的默認(rèn)值是“togglebutton”。:編輯框(EditText),允許用戶動態(tài)地編輯文本字符串或數(shù)字,就象使用文本編輯器或文字處理器一樣。編輯框一般用于讓用戶輸入或修改文本字符串和數(shù)字。編輯框的“String”屬性“的默認(rèn)值是“EditText”。,8,:單選按鈕(RadioButton),又稱無線按鈕,它由一個標(biāo)注字符串(在“String”屬性中設(shè)置)和字符串左側(cè)的一個小圓圈組成。當(dāng)它被選擇時,圓圈被填充一個黑點,且屬性“Value”的值為“1”;若未被選擇,圓圈為空,屬性的“Value”值為“0”。單選按鈕一般用于在一組互斥的選項中選擇一項。為了確?;コ庑?,各單選按鈕的回調(diào)程序需要將其它各項的“Value”值設(shè)為“0”。單選按鈕“style”的屬性的默認(rèn)值是“RadioButton”。,9,:彈出式菜單(Pop-upMenu),向用戶提出互斥的一系列選項清單,用戶可以選擇其中的某一項。彈出式菜單下拉式菜單,它不受菜單條的限制,可以位于圖形窗口內(nèi)的任何位置。通常狀態(tài)下,彈出式菜單以矩形的形式出現(xiàn),矩形中含有當(dāng)前選擇的選項,在選項右側(cè)有一個向下的箭頭來表明該對象是一個彈出式菜單。當(dāng)指針處在彈出式菜單的箭頭之上并按下鼠標(biāo)時,出現(xiàn)所有選項。移動指針到不同的選項,單擊鼠標(biāo)左鍵就選中了該選項,同時關(guān)閉彈出式菜單,顯示新的選項。選擇一個選項后,彈出式菜單的“Value”屬性值為該選項的序號。彈出式菜單的“Style”屬性的默認(rèn)值是“popupmenu”,在“string”屬性中設(shè)置彈出式菜單的選項字符串,在不同的選項之間用“|”分隔,類似于換行。,:,10,:圖文框(Panel),圖文框是填充的矩形區(qū)域。一般用來把其它控件放入圖文框中,組成一組。圖文框本身沒有回調(diào)程序。注意只有用戶界面控件可以在圖文框中顯示。由于圖文框是不透明的,因而定義圖文框的順序就很重要,必須先定義圖文框,然后定義放到圖文框中的控件。因為先定義的對象先畫,后定義的對象后畫,后畫的對象覆蓋到先畫的對象上。,:靜態(tài)文本框(text),靜態(tài)文本框用來顯示文本字符串,該字符串內(nèi)容由屬性“string”確定。靜態(tài)文本框之所以稱為“靜態(tài)”,是因為文本不能被動態(tài)的修改,而只能通過改變“String”屬性來更改。靜態(tài)文本框一般用于顯示標(biāo)記、提示信息及當(dāng)前值。靜態(tài)文本框的“Style”屬性的默認(rèn)值是“text”。,:,11,:列表框(listbox),列表框列出一些選項的清單,并允許用戶選擇其中的一個或多個選項,一個或多個的模式由Min和Max屬性控制。Value屬性的值為被選中選項的序號,同時也指示了選中選項的個數(shù)。當(dāng)單擊鼠標(biāo)按鈕選中該項后,Value屬性的值被改變,釋放鼠標(biāo)按鈕的時候Matlab執(zhí)行列表框的回調(diào)程序。列表框的“Style”屬性的默認(rèn)值是“l(fā)istbox”。:復(fù)選框(checkbox),又稱檢查框,它由一個標(biāo)注字符串(在“String”屬性中設(shè)置)和字符串左側(cè)的一個小方框所組成。選中時在方框內(nèi)添加“”符號,“Value”屬性值設(shè)為“1”;未選中時方框變空,“Value”屬性值設(shè)為“0”。復(fù)選框一般用于表明選項的狀態(tài)或?qū)傩浴?12,:滑動條(slider),又稱滾動條,包括三個部分,分別是滑動槽,表示取值范圍;滑動槽內(nèi)的滑塊,代表滑動條的當(dāng)前值;以及在滑動條兩端的箭頭,用于改變滑動條的值?;瑒訔l一般用于從一定的范圍中取值。改變滑動條的值有三種方式,一種是用鼠標(biāo)指針拖動滑塊,在滑塊位于期望位置后放開鼠標(biāo);另一種是當(dāng)指針處于滑塊槽中但不在滑塊上時,單擊鼠標(biāo)按鈕,滑塊沿該方向移動一定距離,距離的大小在屬性“SliderStep”中設(shè)置,缺省情況下等于整個范圍的10%;第三種方式是在滑塊條的某一端用鼠標(biāo)單擊箭頭,滑塊沿著箭頭的方向移動一定的距離,距離的大小在屬性“SliderStep”中設(shè)置,缺省情況下為整個范圍的1%。滑動條的“Style”屬性的默認(rèn)值是“slider”:按鈕組(ButtonGroup),放到按鈕組中的多個單選按鈕具有排它性,但與按鈕組外的單選按鈕無關(guān)。制作界面時常常會遇到有幾組參數(shù)具有排它性的情況,即每一組中只能選擇一種情況。此時,可以用幾組按鈕組表示這幾組參數(shù),每一組單選按鈕放到一個按鈕組控件中。,13,圖7-3帶有控件的圖形界面編輯器外觀圖,三、幾何位置排列工具,14,利用對象對齊工具,可以很方便地對對象設(shè)計編輯器中設(shè)計區(qū)內(nèi)多個對象的位置進(jìn)行調(diào)整。從對象設(shè)計編輯器界面的工具欄上選擇按鈕,或者選擇“Tools”菜單下的“AlignObjects.”選項,可以打開對象位置調(diào)整器,如圖7-4所示:,圖7-4排列工具欄外觀圖,利用對象對齊工具,可以設(shè)置對象在垂直方向和水平方向上的對齊方式和間距。選中多個對象后,可以方便地通過對象對齊工具進(jìn)行調(diào)整。上半部分為垂直方向調(diào)整控制區(qū),下面為水平方向調(diào)整控制區(qū)。將在下節(jié)GUI的向?qū)гO(shè)計中進(jìn)一步熟悉排列工具的使用。,15,四、用屬性編輯器設(shè)置控件屬性,利用對象屬性編輯器,可以查看、修改和設(shè)置每個對象的屬性值,在對象設(shè)計編輯器界面工具欄上選擇“View”下的“InspectProperties”選項,可以打開對象屬性編輯器。另外,在Matlab命令窗口的命令行輸入inspect,也可以打開對象屬性編輯器。對象屬性編輯器如圖7-5所示:,圖7-5屬性編輯器外觀圖,16,五、菜單編輯器利用菜單編輯器,可以創(chuàng)建、設(shè)置、修改下拉式菜單和彈出式菜單。在GUIDE中單擊工具欄上的按鈕,或者選擇“Tools”菜單中的“MenuEditor”選項,打開菜單編輯器的界面,如圖7-6所示:,圖7-6菜單編輯器界面圖,GUIDE能夠創(chuàng)建兩種類型的菜單。一種是在圖形窗口菜單欄中顯示的菜單欄菜單;另一種是當(dāng)用戶在圖形對象上單擊鼠標(biāo)右鍵時產(chǎn)生的上下文菜單??梢允褂貌藛尉庉嬈鱽韯?chuàng)建這兩種類型的菜單。,17,1創(chuàng)建菜單欄菜單圖7-6中左上角第一個按鈕用于創(chuàng)建下拉式菜單。用戶可以通過點擊它來創(chuàng)建下拉式主菜單;第二個按鈕用于創(chuàng)建下拉式菜單的子菜單,在選中已經(jīng)創(chuàng)建的下拉式菜單后,可以單擊這個按鈕來創(chuàng)建選中的下拉式主菜單的子菜單。選中創(chuàng)建的某個下拉式菜單后,菜單編輯器的右邊就會出現(xiàn)顯示該菜單的有關(guān)屬性,用戶可以在這里設(shè)置、修改菜單的屬性。,圖7-7下拉式菜單創(chuàng)建圖,18,2創(chuàng)建上下文菜單利用菜單編輯器創(chuàng)建上下文菜單對象后,當(dāng)用戶在圖形對象上單擊鼠標(biāo)右鍵時,上下文菜單會隨之出現(xiàn),這樣可以根據(jù)上下文的具體內(nèi)容修改圖形對象的相應(yīng)屬性,故菜單編輯器能夠創(chuàng)建上下文菜單并將菜單與圖形對象聯(lián)系起來。,圖7-8上下文菜單創(chuàng)建圖,注意:在創(chuàng)建菜單之前要選擇菜單編輯器的ContextMenu標(biāo)簽界面。,19,六、對象瀏覽器利用對象瀏覽器,可查看當(dāng)前所創(chuàng)建的圖形對象。從對象設(shè)計編輯器界面的工具欄上選擇,或者選擇“View”菜單下的“ObjectBrowser”選項,可以打開對象瀏覽器。,圖7-9對象瀏覽器,20,第二節(jié)GUI向?qū)гO(shè)計,GUI的向?qū)гO(shè)計,簡單地說,就是利用GUI設(shè)計工具集實現(xiàn)多種控制對象的設(shè)計。本節(jié)我們將通過實例實踐其具體操作過程?!纠?-1】設(shè)計一個帶有三個按鈕和一個坐標(biāo)軸的圖形用戶界面,當(dāng)用鼠標(biāo)點擊三個按鈕時,分別在坐標(biāo)軸內(nèi)畫sphere,和membrane三個圖形。peaks創(chuàng)建控件前面我們已經(jīng)建立了帶有一個坐標(biāo)軸和三個按鈕控件的圖形界面,這里就不贅述了,如前圖7-3所示。設(shè)置控件對齊方式若控件排列不夠整齊,當(dāng)控件個數(shù)較少時,逐個調(diào)整尚可,但當(dāng)控件個數(shù)較多時,逐個調(diào)整將變得麻煩,費時,這時我們可以應(yīng)用幾何位置排列工具對控件的位置進(jìn)行調(diào)整。首先要將待調(diào)整的控件同時選中。選中方法有兩種:一是按住“Ctrl”鍵,用鼠標(biāo)左鍵逐一點擊要調(diào)整的控件;二是按住鼠標(biāo)左鍵進(jìn)行拖拽框選,然后點擊工具欄上的打開幾何位置排列工具窗口,再點擊下面的,使得所選的控件左對齊,點擊“確定”后,界面設(shè)計編輯器效果如圖7-10所示。,21,圖7-10調(diào)整空間位置后的界面設(shè)計編輯器外觀圖,22,設(shè)置控件屬性圖7-10共有三個按鈕,且每個按鈕行使相應(yīng)的功能,在按鈕上雙擊鼠標(biāo)左鍵可以打開按鈕屬性編輯器,如圖7-11所示,該圖的左側(cè)是按鈕的所有屬性,右側(cè)是其屬性值。,圖7-11按鈕屬性編輯器外觀圖,23,編寫回調(diào)程序前三部的工作結(jié)束后,界面上的三個按鈕就要行使其功能了。首先,點擊菜單欄上的保存按鈕進(jìn)行文件的保存,此時,會彈出“saveas”對話框,如圖7-14所示,進(jìn)行FIG文件保存,文件命名為myGUI。,圖7-14保存圖形界面的對話框圖,24,同時,Matlab會自動創(chuàng)建一個同名的M文件,并且自動打開,如圖7-15所示。,圖7-15自動生成的M文件,其次,在自動生成的M文件中,找到與三個按鈕有關(guān)的回調(diào)子函數(shù),本例中的回調(diào)子函數(shù)見圖7-16所示的光標(biāo)定位處(這里我們僅截取了按鈕1的回調(diào)子函數(shù))。,25,圖7-16按鈕1的回調(diào)子函數(shù)定位圖,26,下面就可以在該子函數(shù)的空白處填寫回調(diào)程序了。例如,按鈕“sphere”的回調(diào)程序為:sphere;axistight;按鈕“peaks”的回調(diào)程序為:peaks;axistight;按鈕“membrane”的回調(diào)程序為:membrane;axistight;上面的三個回調(diào)程序在自動生成的命名為myGUI的M文件編輯器中錄入的情況如圖7-17所示,為了減少圖占用太大的空間,將編輯器中三個子函數(shù)部分的解釋性語句已刪去。,27,圖7-17M文件編輯器中的三個按鈕的回調(diào)子函數(shù),28,程序錄入后,點擊保存圖標(biāo),將M文件重新保存,然后點擊M文件編輯器上的運行快捷按鈕或返回到圖7-13未被激活的圖形界面,點擊工具欄上的運行圖標(biāo),此時則生成如圖7-18(a)所示的被激活的圖形界面。當(dāng)點擊“sphere”按鈕時,在空白的坐標(biāo)軸處出現(xiàn)球體,如圖7-18(b)所示;點擊“peaks”按鈕時,在空白的坐標(biāo)軸處出現(xiàn)尖峰圖,如圖7-18(c)所示;點擊“membrane”按鈕時,在空白的坐標(biāo)軸處出現(xiàn)membrane圖,如圖7-18(d)所示。,29,(a)(b),(c)(d)圖7-18運行結(jié)果(a)被激活后的界面;(b)sphere圖;(c)peaks圖;(d)membrane圖,30,至此,圖形界面的GUI向?qū)гO(shè)計就完成了。還有一點需要說明的是,在編寫回調(diào)程序時,也可以在屬性編輯器的Callback屬性中錄入代碼。事實上,兩種方法得到的結(jié)果是相同的。但是,第二種方法(直接修改Callback屬性值)適用于代碼語句少的的情況,如果函數(shù)體由多條語句組成,最好采用本例所使用的方法。,31,第三節(jié)GUI程序設(shè)計,這一節(jié)我們將介紹如何應(yīng)用,用函數(shù)編寫用戶界面,主要涉及三個函數(shù):uimenu(菜單),uicontextmenu(上下文菜單)和uicontrol(控件)。一、用戶界面菜單對象和上下文菜單對象的建立1用戶界面菜單對象的建立自制用戶菜單對象,通過函數(shù)uimenu創(chuàng)建,調(diào)用格式為:h=uimenu(PropertyName1,value1,PropertyName2,value2,),,32,即在當(dāng)前圖形窗口上部的菜單欄創(chuàng)建一個菜單對象,并返回一個句柄值。函數(shù)變量PropertyName是所建菜單的屬性,value是屬性值。菜單對象的屬性分為公共屬性、基本控制屬性和callback管理屬性三部分,關(guān)于屬性及其的詳細(xì)內(nèi)容見Matlab幫助文件,這里介紹一些常用重要屬性的設(shè)置方法。,33,label和callback這是菜單對象的基本屬性,編寫一個具有基本功能的菜單必須要設(shè)置label和callback屬性。label是在菜單項上顯示的菜單內(nèi)容;callback是用來設(shè)置菜單項的回調(diào)程序。checked和separatorchecked屬性用于設(shè)置是否在菜單項前添加選中標(biāo)記。記為”on”表示添加,”off”表示不添加。因為有些菜單的選中標(biāo)記相斥,這就要求給一個菜單項添加選中標(biāo)記的同時去掉另一個選項的標(biāo)記;separator用于在菜單項之前添加分隔符,以便使菜單更加清晰。BackgroundColor和ForegroundColorBackgroundColor(背景色)是菜單本身的顏色;ForegroundColor(前景色)是菜單內(nèi)容的顏色。,34,【例7-2】建立一個包含用戶界面菜單項的圖形界面,并可執(zhí)行菜單項的相應(yīng)功能,分別繪制membrane、peaks和sinc函數(shù)圖形。Matlab程序如下:%首先建立一個圖形窗口,去除窗口本身包含的菜單條和工具條,并命名為myfirstGUIh0=figure(menubar,none,toolbar,none,name,myfirstGUI);%從左至右,依次建立各級菜單%先建立【Draw】菜單和其下的【Membrane】【Peaks】和【Sinc】子菜單項h1=uimenu(h0,label,Draw);h11=uimenu(h1,label,Membrane,callback,membrane);h12=uimenu(h1,label,Peaks,callback,peaks);h13=uimenu(h1,label,Sinc,callback,.x,y=meshgrid(-5:0.5:5);,r=sqrt(x.2+y.2)+eps;,.z=sin(r)./r;,surf(z););該段代碼運行后,生成如圖7-19所示的帶菜單界面圖。,35,圖7-19生成“membrane”的圖形界面,36,%建立第二個菜單【Colormap】及其下的【Cool】【Hot】【Default】子菜單項,當(dāng)某項被選中時,添加選中標(biāo)記,同時去掉其它選項的選中標(biāo)記h2=uimenu(h0,label,ColorMap);h22(1)=uimenu(h2,label,Hot,.callback,.set(h22,checked,off);,.set(h22(1),checked,on);,colormap(hot););h22(2)=uimenu(h2,label,Cool,.callback,.set(h22,checked,off);,.set(h22(2),checked,on);,colormap(cool););h22(3)=uimenu(h2,label,Spring,.callback,.set(h22,checked,off);,.set(h22(3),checked,on);,colormap(Spring););該段代碼運行后,生成如圖7-20所示的界面圖。,37,圖7-20生成“hot”效果的圖形界面,38,%建立控制坐標(biāo)軸的顯示菜單【Axis】,用于是否顯示坐標(biāo)軸h3=uimenu(h0,label,Axis);h31=uimenu(h3,label,Axison,callback,axison);h32=uimenu(h3,label,Axisoff,callback,axisoff);該段代碼運行后,生成如圖7-21所示的界面圖。,圖7-21生成帶坐標(biāo)軸的圖形界面,39,%建立關(guān)閉圖形用戶界面按鈕【close】hbutton=uicontrol(position,80306030,string,close,fontsize,8,fontweight,bold,callback,close);至此,就形成了一個用戶菜單界面,執(zhí)行結(jié)果如圖7-19、7-20和7-21所示的三個圖形。實際上,運行上面的代碼后,僅產(chǎn)生一個圖形界面,為了讓讀者看清界面內(nèi)的主菜單下的子菜單所對應(yīng)的功能,在相應(yīng)的位置給出了該子菜單的Callback屬性的回調(diào)程序結(jié)果。,40,提示:在單引號內(nèi)的字符串必須用兩單引號(不等于雙引號)表示所需的單引號;在設(shè)置選中標(biāo)記時,先用命令set(h22,”check”,”off”),將h22中三個句柄對應(yīng)的菜單項都設(shè)為未選中狀態(tài),然后,把選擇的菜單項設(shè)為選中狀態(tài),以保證多個選項之間的互斥性。,41,2用戶界面上下文菜單的建立用戶界面上下文菜單對象,與固定位置的菜單對象相比,上下文菜單對象的位置不固定,總是與某個(些)圖形對象相聯(lián)系,并通過鼠標(biāo)右鍵激活,制作上下文菜單步驟如下:利用函數(shù)uicontextmenu創(chuàng)建上下文菜單對象;利用函數(shù)uimenu為該上下文菜單對象制作具體的菜單項;利用函數(shù)set將該上下文菜單對象和某些圖形對象聯(lián)系在一起。下面通過示例看一下uicontextmenu函數(shù)的使用。,42,【例7-3】在一個圖形窗口繪制拋物線和余弦曲線,并創(chuàng)建一個與之相聯(lián)系的上下文菜單,用于控制線條的顏色、線寬、線型及標(biāo)記點風(fēng)格。Matlab程序如下:%畫曲線y1,并設(shè)置其句柄h=uicontextmenu;t=-1:0.1:1;subplot(2,1,1);y1=t.2;h_line1=plot(t,y1);%建立上下文菜單uimenu(h,label,red,callback,set(h_line1,color,r);uimenu(h,label,green,callback,set(h_line1,color,g);uimenu(h,label,yellow,callback,set(h_line1,color,y);uimenu(h,label,linewidth1.5,callback,set(h_line1,linewidth,1.5);uimenu(h,label,linestyle*,callback,set(h_line1,linestyle,*);uimenu(h,label,linestyle:,callback,set(h_line1,linestyle,:);uimenu(h,label,marker,callback,set(h_line1,marker,s);set(h_line1,uicontextmenu,h)%使上下文菜單與正弦曲線h_line1相聯(lián)系title(拋物線和余弦曲線,fontweight,bold,fontsize,14)set(gca,xtick,-1:0.5:1)%設(shè)置坐標(biāo)軸的標(biāo)度范圍set(gca,xticklabel,-1,0.5,0,0.5,1)%設(shè)置坐標(biāo)軸的標(biāo)度值,43,%畫曲線y2,并設(shè)置其句柄subplot(2,1,2);t=0:0.1:2*pi;y2=cos(t);h_line2=plot(t,y2);h=uicontextmenu;uimenu(h,label,red,callback,set(h_line2,color,r);uimenu(h,label,crimson,callback,set(h_line2,color,m);uimenu(h,label,black,callback,set(h_line2,color,k);uimenu(h,label,linewidth1.5,callback,set(h_line2,linewidth,1.5);uimenu(h,label,linestyle*,callback,set(h_line2,linestyle,*);uimenu(h,label,linestyle:,callback,set(h_line2,linestyle,:);uimenu(h,label,marker,callback,set(h_line2,marker,s);set(h_line2,uicontextmenu,h)set(gca,xtick,0:pi/2:2*pi)set(gca,xticklabel,0,pi/2,pi,3pi/2,2pi)xlabel(time0-2pi,fontsize,10),44,%建立關(guān)閉圖形用戶界面按鈕【close】hbutton=uicontrol(position,80306030,string,close,fontsize,8,fontweight,bold,callback,close);在Matlab中運行該程序段,得到如圖7-22所示圖形。將鼠標(biāo)指向線條,單擊鼠標(biāo)右鍵,彈出上下文菜單,在選中某菜單項后,將執(zhí)行該菜單項的操作。,45,(a)(b)圖7-22帶有上下文菜單的圖形界面(a)將拋物線的線型設(shè)為“*”時的圖形界面;(b)將余弦曲線的線寬設(shè)為“1.5”時的圖形界面,46,二、用戶界面控件對象的建立除了菜單以外,控件對象是另一種實現(xiàn)用戶與計算機(jī)交互的重要手段。用戶界面控件對象是這樣一類圖形界面的對象:用戶用鼠標(biāo)在控件對象上進(jìn)行操作,鼠標(biāo)點擊控件時,將激活該控件所對應(yīng)的后臺應(yīng)用程序,并執(zhí)行該程序。利用函數(shù)命令創(chuàng)建控件對象的格式為:H=uicontrol(PropertyName1,value1,PropertyName2,value2,)當(dāng)用函數(shù)創(chuàng)建控件時,這里我們有必要對控件的幾個重要屬性給予介紹。,47,Value屬性:控件的當(dāng)前值,格式為標(biāo)量或變量。該屬性對不同的控件有不同的取值方式,分別為:復(fù)選框:當(dāng)此控件被選中時,Value的值為屬性Max中的設(shè)置的值;未被選中時Value的值為屬性中設(shè)置的值。列表框:被選中選項的序號,當(dāng)有多個選項被選中時,Value的屬性值為向量。序號指的是選項的排列次序,最上面的選項序號為1,第二個選項序號為2。彈出式菜單:和列表框類似,也是被選中選項的序號,只是彈出式菜單只能有一個選項被選中,因而Value屬性值是標(biāo)量。單選按鈕:被選中時Value的值為屬性Max中設(shè)置的值:未被選中時,Value的值為屬性Min中設(shè)置的值?;瑒訔l:Value的值等于滑塊指定的值。開關(guān)按鈕:“開”時Value的值為屬性Max中設(shè)置的值:“關(guān)”時Value的值為屬性Min中設(shè)置的值。,48,Max屬性:指定Value屬性中可以設(shè)置的最大值,格式為標(biāo)量。該屬性對不同的控件有不同的含義,分別如下所述:,復(fù)選框:當(dāng)復(fù)選框被選中時Value屬性的取值。編輯框:如果Max的值減去Min的值大于1,那么編輯框可以接受多行輸入文本;如果Max的值減去Min的值小于或等于1,那么編輯器只能接受一行輸入文本。列表框:如果Max的值減去Min的值大于1,那么允許選取多個選項;如果Max的值減去Min的值小于或等于1,那么只能選取一個選項。單選按鈕:當(dāng)單選按鈕被選中時Value屬性的取值。滑動條:滑動條的最大值,缺省值是1開關(guān)按鈕:當(dāng)開關(guān)按鈕“開”(被選中)時Value屬性的取值。缺省值是1。,文本框、彈出式菜單、按鈕和靜態(tài)文本框無此屬性。,49,Min屬性:指定Value屬性中可以設(shè)置的最小值,格式為標(biāo)量。該屬性對不同的控件有不同的含義,分別如下所述:,復(fù)選框:當(dāng)復(fù)選框被選中時Value屬性的取值。編輯框:如果Max的值減去Min的值大于1,那么編輯框可以接受多行輸入文本;如果Max的值減去Min的值小于或等于1,那么編輯器只能接受一行輸入文本。列表框:如果Max的值減去Min的值大于1,那么允許選取多個選項;如果Max的值減去Min的值小于或等于1,那么只能選取一個選項。單選按鈕:當(dāng)單選按鈕未被選中時Value屬性的取值?;瑒訔l:滑動條的最小值,缺省值是0。開關(guān)按鈕:當(dāng)開關(guān)按鈕“開”(被選中)時屬性的取值。缺省值是1。,文本框、彈出式菜單、按鈕和靜態(tài)文本框無此屬性。,50,【例7-4】建立一個包含控件的圖形用戶界面,點擊控件時執(zhí)行該控件的相應(yīng)功能,要求繪制membrane,peaks和sphere函數(shù)圖形,并有光照控制效果。%建立圖形窗口和坐標(biāo)軸,去除窗口本身的菜單條和工具條,并命名為mysecondGUIh0=figure(menubar,none,toolbar,none,position,19856408468,name,mysecondGUI);h1=axes(parent,h0,position,0.150.450.70.5,visible,off);%建立靜態(tài)文本框和動態(tài)文本框htext1=uicontrol(parent,h0,units,points,position,541104515,string,inputtitle,style,text);hedit=uicontrol(parent,h0,units,points,position,1001104516,callback,title(get(hedit,string),style,edit);,51,%創(chuàng)建三個按鈕hbutton1=uicontrol(parent,h0,units,points,string,Sphere,.position,20655018,callback,mesh(sphere);axistight);hbutton2=uicontrol(parent,h0,units,points,string,Membrane,.position,75655018,callback,mesh(membrane);axistight);hbutton3=uicontrol(parent,h0,units,points,string,Sinc,position,135655018,callback,.x,y=meshgrid(-5:0.5:5);,r=sqrt(x.2+y.2)+eps;,z=sin(r)./r;,mesh(x,y,z);%創(chuàng)建靜態(tài)文本框和滾動條,鼠標(biāo)拖動滾動條控制圖形的顏色變化htext2=uicontrol(parent,h0,units,points,position,.20304515,string,brightness,style,text);hslider=uicontrol(parent,h0,units,points,position,.653012015,min,-1,max,1,style,slider,callback,.brighten(get(hslider,value);%建立靜態(tài)文本框和五個單選按鈕,52,htext3=uicontrol(parent,h0,units,points,position,.2001308015,string,selectcolor:,style,text);hradio(1)=uicontrol(parent,h0,units,points,position,.2001158015,string,default,style,.radiobutton,value,1,callback,.set(hradio,value,0);,set(hradio(1),value,1);,.colormap(default);hradio(2)=uicontrol(parent,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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論