![基礎(chǔ)及其應(yīng)用教程管愛紅第9章圖形用戶界_第1頁(yè)](http://file4.renrendoc.com/view/79d0df192a9c574309af6bdfe784b58e/79d0df192a9c574309af6bdfe784b58e1.gif)
![基礎(chǔ)及其應(yīng)用教程管愛紅第9章圖形用戶界_第2頁(yè)](http://file4.renrendoc.com/view/79d0df192a9c574309af6bdfe784b58e/79d0df192a9c574309af6bdfe784b58e2.gif)
![基礎(chǔ)及其應(yīng)用教程管愛紅第9章圖形用戶界_第3頁(yè)](http://file4.renrendoc.com/view/79d0df192a9c574309af6bdfe784b58e/79d0df192a9c574309af6bdfe784b58e3.gif)
![基礎(chǔ)及其應(yīng)用教程管愛紅第9章圖形用戶界_第4頁(yè)](http://file4.renrendoc.com/view/79d0df192a9c574309af6bdfe784b58e/79d0df192a9c574309af6bdfe784b58e4.gif)
![基礎(chǔ)及其應(yīng)用教程管愛紅第9章圖形用戶界_第5頁(yè)](http://file4.renrendoc.com/view/79d0df192a9c574309af6bdfe784b58e/79d0df192a9c574309af6bdfe784b58e5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基礎(chǔ)及其應(yīng)用教程管愛紅第9章圖形用戶界圖形用戶界面 (Graphical User Interface,GUI)是指人與計(jì)算機(jī)或計(jì)算機(jī)軟件之間的圖形化的交互方式。一個(gè)設(shè)計(jì)良好的GUI,能夠極大地方便用戶操作,用戶可以通過窗口、菜單、圖標(biāo)、按鈕等方式操作計(jì)算機(jī)和運(yùn)行軟件。在GUI中,計(jì)算機(jī)畫面上顯示的窗口、菜單、按鈕等圖形表示不同目的和動(dòng)作,用戶通過鍵盤、鼠標(biāo)等設(shè)備進(jìn)行選擇或參數(shù)輸入。MATLAB進(jìn)行各類科學(xué)研究的讀者,如果需要向別人提供應(yīng)用程序,或進(jìn)行某種技術(shù)、方法的演示,或制作一個(gè)供反復(fù)使用且操作簡(jiǎn)單的專用工具,設(shè)計(jì)一個(gè)圖形用戶界面就成為一項(xiàng)必不可少的工作。MATLAB為表現(xiàn)其基本功能而設(shè)計(jì)
2、的演示程序demo 是使用圖形界面的良好范例。在Command Window窗口中運(yùn)行Demo 打開圖形用戶界面后,只要用鼠標(biāo)進(jìn)行選擇和點(diǎn)擊,就可以瀏覽其豐富多彩的內(nèi)容?!緦W(xué)習(xí)目標(biāo)】熟悉GUIDE開發(fā)環(huán)境;掌握GUI的設(shè)計(jì)方法,學(xué)會(huì)設(shè)計(jì)包含菜單與常用控件的較復(fù)雜的GUI 9.1使用GUIDE創(chuàng)建GUIMATLAB提供的圖形用戶界面開發(fā)環(huán)境是GUIDE(Graphical User Interface Development Environment),它提供了一組豐富的圖形用戶界面創(chuàng)建工具。我們可以利用GUIDE對(duì)圖形用戶界面進(jìn)行布局和編程。本節(jié)對(duì)GUIDE的使用方法進(jìn)行初步介紹。9.1.1 G
3、UIDE編輯界面簡(jiǎn)介 進(jìn)入到GUIDE開發(fā)環(huán)境通常有如下三種方法:1.在MATLAB主窗口中,選擇File菜單中的“New”菜單項(xiàng),再選擇其中的“GUI”;2.在Command Window中輸入Guide,按【Enter】鍵;3.點(diǎn)擊Matlab主界面工具欄上的Guide按鈕。首先會(huì)彈出“Guide Quick Start”對(duì)話框,如圖9.1所示,其中的兩個(gè)選項(xiàng)分別為“Create New GUI”(創(chuàng)建新的GUI)和“Open Existing GUI”(打開已經(jīng)存在的GUI)。 “Create New GUI”分別有以下GUIDE模板:Blank GUI(Default)(空GUI);G
4、UI with Uicontrols(帶Uicontrols的GUI);GUI with Axes and Menu(帶坐標(biāo)軸和菜單的GUI);Model Question Dialog(模板提問對(duì)話框)。點(diǎn)擊相應(yīng)的選項(xiàng)時(shí)可以在右側(cè)看到相應(yīng)的預(yù)覽(Preview)。選擇“Save on startup as”時(shí)可選擇改變生成文件的默認(rèn)存儲(chǔ)路徑。選擇第一項(xiàng):Blank GUI(Default),并單擊OK,可得如圖2所示的布局編輯器(Layout Editor)界面,正在編輯的是一個(gè)空的GUI模板。編輯器的各主要組成部分已經(jīng)標(biāo)注在圖中。選中組件面板(Component Palette)中的某一個(gè)
5、組件,按下鼠標(biāo)左鍵,拖曳,就可以把它放置在布局工作區(qū)(Layout Area)中。 組件面板設(shè)計(jì)工作區(qū)菜單欄工具欄工作區(qū)大小縮放句柄布局編輯界面菜單欄(Menu Bar)下面是工具欄(Toolbar),其上是一些常用的快捷按鈕,當(dāng)鼠標(biāo)停留在快捷按鈕上方片刻,會(huì)彈出提示框提示按鈕的名稱。下面介紹部分快捷按鈕。 Align Objects :用來(lái)調(diào)整組件在GUI中的分布和排列,點(diǎn)擊后界面如圖9.3 所示;Menu Editor:菜單編輯器。用于給GUI添加并編輯菜單;Tab Order Editor:Tab順序編輯器。用于設(shè)置在GUI處于運(yùn)行狀態(tài)時(shí),按下鍵盤的【Tab】鍵依次選擇組件的順序;M-:
6、M文件編輯器。設(shè)計(jì)好的GUI運(yùn)行后一般會(huì)對(duì)應(yīng)生成兩個(gè)文件,一個(gè)是圖形(.fig)文件,另一個(gè)是程序(.m)文件。M文件編輯器可以打開程序文件進(jìn)行編輯;Property Inspector:屬性編輯器,用于設(shè)置在你設(shè)計(jì)當(dāng)中各組件的各種屬性,如名稱、背景、顏色等;Object Browser:對(duì)象瀏覽器,用于瀏覽工作區(qū)中所有對(duì)象的層次結(jié)構(gòu);Run:運(yùn)行GUI。菜單設(shè)計(jì)實(shí)例菜單一般置于GUI的最上方,應(yīng)用程序的幾乎全部功能都包含其中。按下 按鈕,進(jìn)入Menu Editor編輯器如圖9.4所示,Menu Editor的快捷按鈕從左至右依次為: New Menu(新菜單) New Menu Item(新
7、子菜單) New Context Menu(新右鍵菜單) Move Selected Item Backward Move Selected Item Forward Move Selected Item Up Move Selected Item Down(以上四項(xiàng)用來(lái)更改菜單項(xiàng)的前、后級(jí)別及上、下位置) Delete Selected Item(刪除菜單)點(diǎn)擊菜單編輯器工具條中的 (New Menu)來(lái)創(chuàng)建父菜單;若要?jiǎng)?chuàng)建子菜單項(xiàng),先選中父菜單項(xiàng),點(diǎn)擊(New Menu Item)按鈕。假設(shè)我們創(chuàng)建了如圖9.5的菜單。單擊鼠標(biāo)左鍵選定“Untitled 2”時(shí)同時(shí)選定右側(cè)的選項(xiàng)“Check
8、 mark this item”( 勾選此選項(xiàng)),而選定“Untitled 3”時(shí)同時(shí)選定右側(cè)的“Separator above this item”(在此選項(xiàng)上方添加分割線)。關(guān)閉“Menu Editor”并運(yùn)行,得到如圖9.6的結(jié)果。鼠標(biāo)單擊菜單項(xiàng)“Utitled 1”時(shí)出現(xiàn)如圖9.7 的結(jié)果。注意“Untitled 2”之前的對(duì)號(hào)和“Untitled 3”上方的分割線。細(xì)心的讀者可能會(huì)發(fā)現(xiàn),在“Menu Editor”中還有一個(gè)選項(xiàng)“Context Menus”,意思是右鍵菜單,可以給GUI中的某個(gè)對(duì)象定義Context Menu。GUI處于運(yùn)行狀態(tài)時(shí),當(dāng)用戶鼠標(biāo)右鍵點(diǎn)擊定義了文本菜單的
9、對(duì)象后,會(huì)彈出相應(yīng)的菜單,進(jìn)而可選擇菜單中的選項(xiàng)執(zhí)行對(duì)應(yīng)操作。點(diǎn)擊菜單編輯器工具條中的 (New Context Menu)來(lái)創(chuàng)建右鍵菜單。注意之前要選擇菜單編輯器的“Context Menus”標(biāo)簽界面。子菜單項(xiàng)的創(chuàng)建方法同前。通過修改GUI窗口某一組件的“UiContextMenu”屬性的值可以建立組件和右鍵菜單之間的聯(lián)系。包含控件的GUI設(shè)計(jì)實(shí)例如圖9.8所示,組件面板中包含的控件有:Select:用來(lái)指示在GUIDE中控件的選中狀態(tài)。嚴(yán)格意義上說(shuō)它不是一個(gè)獨(dú)立的控件;Push Button:命令按鈕,其作用是對(duì)用戶的鼠標(biāo)單擊操作做出反應(yīng)并觸發(fā)相應(yīng)的操作,其上的文本標(biāo)識(shí)按鈕的名稱(下同)
10、; Toggle Button: 切換按鈕,又稱開關(guān)按鈕,通過鼠標(biāo)點(diǎn)擊它有兩種狀態(tài),壓下和復(fù)原,對(duì)應(yīng)觸發(fā)兩種不同的操作;Radio Button:?jiǎn)芜x按鈕,一般都是成組出現(xiàn)的,具有互斥的性質(zhì),即同組單選按鈕中只能有一個(gè)是被選中的。當(dāng)單選按鈕處于選擇狀態(tài)時(shí),會(huì)在圓圈中顯示一個(gè)黑色實(shí)心圓; Check Box:復(fù)選框,通常用來(lái)標(biāo)示一種選擇狀態(tài),可以有選中、不選中兩種狀態(tài);當(dāng)一個(gè)選擇框處于選擇狀態(tài)時(shí),在小方框內(nèi)會(huì)出現(xiàn)一個(gè)“”;Static Text:靜態(tài)文本,用于在GUI中顯示特定的標(biāo)識(shí)文本;Edit Text:文本編輯框,用戶可在其中輸入文本;Slider:滾動(dòng)條,包括三個(gè)獨(dú)立的部分,分別是滑槽、
11、滑塊和滑槽兩端的箭頭;使用該控件,用戶可以沿著滾動(dòng)槽拖動(dòng)滑塊來(lái)選擇一個(gè)值;一般用于滾動(dòng)其它控件,比如列表框、文本框等;Panel:面板,用于將其它控件分組,面板內(nèi)的控件將成為面板的子對(duì)象;可以給面板設(shè)定自己的名稱和邊界;Button Group:按鈕組,類似于面板,但通常只用于容納一組互斥的單選或切換按鈕;Listbox:列表框,其內(nèi)容一般是一組選項(xiàng)的列表,用戶可以從列表中進(jìn)行選擇一項(xiàng)或多項(xiàng);Pop-up Menu:彈出式菜單,當(dāng)鼠標(biāo)點(diǎn)擊箭頭時(shí),會(huì)彈出一組互斥的選項(xiàng)清單,供用戶選擇其中的一項(xiàng);Axes:坐標(biāo)軸,可以在其中繪制二維或三維圖形。向GUI窗口中添加控件有兩種方法:1. 從組件面板選擇
12、一個(gè)控件,按下鼠標(biāo)左鍵不放,把它拖曳到設(shè)計(jì)工作區(qū)的合適位置,松開鼠標(biāo);2. 選中組件面板的一個(gè)控件,放開鼠標(biāo),這時(shí)光標(biāo)變?yōu)槭中螤?,移?dòng)光標(biāo)到合適位置,點(diǎn)擊鼠標(biāo)??丶胖煤煤?,選中它,可以通過拖曳控件大小縮放句柄改變控件所占區(qū)域的大小。下面我們來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的帶控件的GUI。首先分別添加一個(gè)Toggle Button、一個(gè)Checkbox、一個(gè)Radio Button,并將它們同時(shí)選中,如圖9.9 所示。然后選擇“Align Objects” 把這這三個(gè)控件呈垂直居中對(duì)齊排列,如圖9.10所示。接下來(lái)雙擊Toggle Button(或先選擇Toggle Button,再點(diǎn)擊按鈕),這時(shí)會(huì)彈出屬
13、性編輯器(Property Inspector)。將其中的BackgroundColor屬性值改為黃色(如圖9.12),并將String屬性的值改為“toggle_first”。再來(lái)看設(shè)計(jì)工作區(qū),我們發(fā)現(xiàn)Toggle Button控件的標(biāo)識(shí)字符及背景顏色都發(fā)生了變化。如圖9.13所示點(diǎn)擊運(yùn)行按鈕,我們就可以看到運(yùn)行后的GUI效果了(圖9.14)。每一個(gè)控件都有自己的屬性。常規(guī)屬性有:1.控件風(fēng)格和外觀1)BackgroundColor:設(shè)置控件背景顏色,通過3元素的RGB向量或MATLAB一個(gè)預(yù)先定義的顏色名稱設(shè)置。缺省為淺灰色。2)CData:在控件上顯示的真彩色圖像,使用矩陣表示。3)Fo
14、regroundColor:控件前景(文本)顏色,缺省為黑色。4)String屬性:控件上的文本內(nèi)容,以及列表框和彈出菜單的各個(gè)選項(xiàng)。5)Visible:控件是否可見。2.對(duì)象的常規(guī)信息1)Enable屬性: 表示此控件的使能狀態(tài),設(shè)置為“on”,表示可選,為“off”時(shí)則表示不可選。 2)Style:控件對(duì)象類型,即常用的控件名稱。3)Tag:控件標(biāo)識(shí),相當(dāng)于給每一個(gè)控件起的個(gè)性化的名字,由用戶定義。4)TooltipString:為控件設(shè)置的提示信息。當(dāng)鼠標(biāo)指針停留在某一控件上時(shí),顯示設(shè)置的提示信息。5)UserData:用戶定義的與控件關(guān)聯(lián)的數(shù)據(jù),可通過命令“set”和“get”訪問。6
15、)Position:控件對(duì)象的尺寸和位置,通常用一個(gè)四元向量left bottom width height表示。7)Units:計(jì)量單位??稍O(shè)置為pixels、normalized、inches、centimeters、points、characters等,Guide環(huán)境下默認(rèn)為normalized。Normalized為相對(duì)單位,規(guī)定父對(duì)象(如設(shè)計(jì)工作區(qū)窗體)左下角點(diǎn)坐標(biāo)為(0, 0),右上角點(diǎn)坐標(biāo)為(1.0, 1.0);其它單位為絕對(duì)單位 (1 point = 1/72 inch) 。8)有關(guān)字體的屬性,如 FontAngle(字體傾斜)、FontName(字體名稱)、FontSize(
16、字體大小)和FontUnits(字體大小計(jì)量單位)等。3.控件回調(diào)函數(shù)(Callback Routine)回調(diào)函數(shù)是指對(duì)控件施加一個(gè)動(dòng)作時(shí)被執(zhí)行的函數(shù)(對(duì)應(yīng)一段程序),例如鼠標(biāo)點(diǎn)擊按鈕,或用鼠標(biāo)移動(dòng)滾動(dòng)條的滑塊等。經(jīng)常用到的回調(diào)函數(shù)有:1)BusyAction:回調(diào)中斷響應(yīng)函數(shù)。當(dāng)控件的另一個(gè)回調(diào)函數(shù)正在執(zhí)行時(shí),又對(duì)此控件有觸發(fā)動(dòng)作,對(duì)此動(dòng)作的相應(yīng)處理,它屬于一種中斷響應(yīng)。有兩種選項(xiàng):即Cancel(取消中斷事件)和queue(排隊(duì)),后者為默認(rèn)設(shè)置。2)ButtonDownFcn:當(dāng)在控件周圍5個(gè)像素范圍內(nèi)按下鼠標(biāo)鍵時(shí)執(zhí)行的回調(diào)函數(shù)。3)CallBack:與控件密切相關(guān)的標(biāo)準(zhǔn)回調(diào)函數(shù),實(shí)現(xiàn)的
17、功能因控件的不同而有不同的定義。當(dāng)對(duì)控件施加標(biāo)準(zhǔn)的動(dòng)作時(shí),執(zhí)行該函數(shù)。4)CreateFcn:在創(chuàng)建對(duì)象過程中執(zhí)行的回調(diào)函數(shù)。5)DeleteFcn:在刪除對(duì)象過程中執(zhí)行的回調(diào)函數(shù)。6)Interruptible屬性:指定當(dāng)前的回調(diào)函數(shù)在執(zhí)行時(shí)是否允許中斷,去執(zhí)行其它的函數(shù)。對(duì)圖9.14中的GUI。雖然我們可以點(diǎn)擊toggle_first按鍵,也可以選中Checkbox和Radio Button,但到目前,它們還沒有意義,因?yàn)閷?duì)它們的觸發(fā)并沒有激起任何響應(yīng),這是因?yàn)閷?duì)應(yīng)的回調(diào)函數(shù)還沒有實(shí)際的執(zhí)行語(yǔ)句。因此,要想設(shè)計(jì)出可用的GUI,我們還要進(jìn)一步學(xué)習(xí)GUI的編程知識(shí)。4.控件當(dāng)前狀態(tài)信息1)Li
18、stboxTop:當(dāng)鼠標(biāo)指向列表框中最頂層的列表項(xiàng)時(shí),顯示的提示信息。2)Max:控件的最大值。3)Min:控件的最小值。4)Value:控件的當(dāng)前值。這些屬性都可以通過屬性編輯器來(lái)設(shè)置。9.1.4 M文件和FIG文件通過以上的操作我們知道了如何去創(chuàng)建一個(gè)簡(jiǎn)單的菜單。第一次運(yùn)行GUI時(shí)會(huì)提示文件的存儲(chǔ)位置,而當(dāng)我們按存儲(chǔ)路徑打開文件夾時(shí),我們發(fā)現(xiàn)的不是一個(gè)文件,而是兩個(gè):后綴名為“.m”的文件(下文簡(jiǎn)稱為M文件)和后綴名為“.fig”的文件(下文簡(jiǎn)稱為FIG文件)。M文件:該文件包括GUI設(shè)計(jì)、控制函數(shù)以及定義為子函數(shù)的用戶控件回調(diào)函數(shù),主要用于控制GUI展開時(shí)的各種特征。這個(gè)M文件包含GUI
19、初始化和控件回調(diào)函數(shù)兩個(gè)組成部分,用戶控件的回調(diào)函數(shù)根據(jù)用戶與GUI的具體交互行為分別調(diào)用。FIG文件:該文件包括GUI圖形窗口及其所以子對(duì)象的完全描述,包括所以對(duì)象的屬性值。FIG文件包含所有的圖形窗口對(duì)象,在用戶打開GUI時(shí),MATLAB能夠通過讀取FIG文件重新構(gòu)造圖形窗口及其所有子對(duì)象。讀者特別需要注意的一點(diǎn)是:GUI運(yùn)行后得到的M文件和FIG文件,是同一個(gè)文件名。初學(xué)者不可以隨意改變文件名,更不可把兩個(gè)文件的文件名改得不一致;否則,將出現(xiàn)程序運(yùn)行錯(cuò)誤的情況。9.2 GUI編程GUI包含許多組件,通過這些組件,用戶可以和計(jì)算機(jī)之間進(jìn)行交互。GUI的實(shí)現(xiàn)任務(wù)之一就是決定這些組件如何響應(yīng)用
20、戶的操作;完成這種控制的機(jī)制就是要進(jìn)行GUI編程。實(shí)際上,在GUIDE環(huán)境下創(chuàng)建的GUI,運(yùn)行后已經(jīng)建立了一個(gè)框架,這個(gè)框架包含在生成的M文件中;另一方面,這個(gè)框架還不完整,GUI編程的目的就在于完善這個(gè)框架,把對(duì)應(yīng)的M文件補(bǔ)充完整,以實(shí)現(xiàn)用戶通過GUI和計(jì)算機(jī)之間的交互。M文件中的回調(diào)函數(shù)是根據(jù)組件的屬性值自動(dòng)命名。GUIDE還將Callback屬性值設(shè)置為一個(gè)字符串,使用戶激活該組件時(shí)對(duì)應(yīng)的回調(diào)函數(shù)能夠被調(diào)用。當(dāng)用戶在GUI界面中添加一個(gè)組件時(shí),GUIDE為該組件的Tag(標(biāo)簽)屬性指定一個(gè)默認(rèn)的值,用戶可以自行修改;回調(diào)函數(shù)名依據(jù)Tag屬性值自動(dòng)生成,當(dāng)用戶保存或運(yùn)行GUI時(shí),GUIDE
21、在應(yīng)用程序M文件中自動(dòng)添加相應(yīng)的回調(diào)函數(shù)。例如在上一個(gè)例子中,在GUI編輯界面中雙擊“toggle_first”,我們可以看到其“Tag”屬性的值為“togglebutton6”,如圖9.15所示。打開生成的M文件,點(diǎn)擊“Show function”按鈕,看到該M文件中有如圖9.16所示的回調(diào)函數(shù)。選擇并單擊“toggle_first”對(duì)應(yīng)的回調(diào)函數(shù):togglebutton6_Callback,其相應(yīng)的代碼如下:% - Executes on button press in togglebutton6.function togglebutton6_Callback(hObject, even
22、tdata, handles)% hObject handle to togglebutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hint: get(hObject,Value) returns toggle state of togglebutton6其中“%”之后的都是注釋的部分。下面我們來(lái)編寫簡(jiǎn)單的代碼,以對(duì)GUI編程能有一個(gè)初步的了解。首先,在t
23、ogglebutton6_Callback這個(gè)函數(shù)下添加如下兩行代碼:set(handles.checkbox3, Visible, off);set(handles.radiobutton3, String, Rbutton_first);其中checkbox3、radiobutton3是其它兩個(gè)控件的Tag屬性值,Visible和String分別是它們的屬性。set命令用來(lái)修改現(xiàn)有對(duì)象屬性值。保存M文件,我們預(yù)期GUI的運(yùn)行結(jié)果是點(diǎn)擊togglebutton6之后checkbox3變?yōu)椴豢梢?,而radiobutton3的String屬性值變?yōu)椤癛button_first”。我們來(lái)運(yùn)行GUI
24、,結(jié)果如圖9.17所示。點(diǎn)擊toggle_first,結(jié)果如圖9.18。與我們預(yù)料的相同。本例中的控件都可以看作是圖形對(duì)象。圖形對(duì)象是用以顯示圖形和GUI組件的基本元素。表9.1列出了各種圖形對(duì)象。對(duì)象描述Root對(duì)計(jì)算機(jī)屏幕最高級(jí)的對(duì)象Figure用來(lái)顯示圖形和用戶界面的窗口Axes在窗口中顯示圖形的軸Uicontrol用戶界面控制。執(zhí)行一個(gè)對(duì)用戶交互作用的函數(shù)。Uimenu用戶定義窗口菜單Uicontextmenu右鍵單擊對(duì)象時(shí)彈出的菜單Image二維像素基礎(chǔ)圖Light影響斑點(diǎn)和表面對(duì)象著色的光源Line用于諸如plot, plot3, semilogx等函數(shù)的線Patch帶邊緣的填充多
25、邊形 Rectangle二維形狀,從矩形到橢圓Surface由x-y平面以上的數(shù)據(jù)值所作圖創(chuàng)建的矩陣數(shù)據(jù)的三維表示Text字符串每個(gè)對(duì)象都有一個(gè)關(guān)聯(lián)函數(shù)。這些函數(shù)與所創(chuàng)建的對(duì)象有相同名稱。例如,text函數(shù)用于創(chuàng)建文本對(duì)象,figure函數(shù)創(chuàng)建figure窗口對(duì)象,等等。對(duì)對(duì)象的操作有一些常用的命令,如表9.2所示。函數(shù)目的copyobj復(fù)制圖形對(duì)象delete刪除對(duì)象findobj查找具有指定屬性值的對(duì)象句柄gca返回當(dāng)前軸的句柄gcf返回當(dāng)前窗口的句柄gco返回當(dāng)前對(duì)象的句柄get詢問對(duì)象屬性值set設(shè)置對(duì)象屬性值9.3 實(shí)例解析 9.3.1 實(shí)例1:peaks函數(shù)的輪廓圖繪制本例講解如何
26、實(shí)現(xiàn)彈出菜單,以及如何單擊命令按鈕控件以在坐標(biāo)系中畫出圖形。步驟1:用GUIDE創(chuàng)建一個(gè)空的GUI,添加一個(gè)axes控件和兩個(gè)Push Button 控件,如圖9.19所示。步驟2:把第一個(gè)Push Button控件的Sring屬性改為“Plot_first”,Tag屬性改為“plot_first”。注意更改后應(yīng)點(diǎn)擊其他選項(xiàng)后再關(guān)閉屬性窗口,否則改變不會(huì)生效。同時(shí)把第二個(gè)Push Button控件的String屬性該為“shading_interp”,Tag屬性改為“shading_interp_first”。注意用鼠標(biāo)拉長(zhǎng)第二個(gè)控件的長(zhǎng)度,以使String屬性的值能夠完全顯示。然后使這兩個(gè)控
27、件對(duì)齊,如圖20所示。步驟3:保存文件,將文件命名為“plot_first”。點(diǎn)擊確定,這時(shí)會(huì)看到M-file的編輯框。查看其包括的函數(shù),我們會(huì)發(fā)現(xiàn)其中有“plot_first_Callback”和“shading_interp_first_Callback”兩個(gè),它們分別對(duì)應(yīng)兩個(gè)控件,是兩個(gè)控件的回調(diào)函數(shù)。步驟4:再次回到GUIDE,使用“Menu Editor”來(lái)編輯菜單。首先添加一個(gè)一級(jí)菜單,如圖9.21所示。再添加一個(gè)二級(jí)菜單,如圖9.22。打開M_file編輯框,這時(shí)我們發(fā)現(xiàn)又多了兩個(gè)函數(shù)“help_Callback”和“about_Callback”,分別是這兩個(gè)Menu的回調(diào)函數(shù)
28、。我們可以先運(yùn)行看看,如圖9.23。點(diǎn)擊Help會(huì)彈出二級(jí)菜單。到目前位置初步的工作已經(jīng)做好了,現(xiàn)在我們想這個(gè)GUI實(shí)現(xiàn)如下功能:點(diǎn)擊Plot_first時(shí)左側(cè)的坐標(biāo)軸描繪出一個(gè)個(gè)peaks函數(shù)的輪廓圖,點(diǎn)擊shading_interp時(shí)在該圖象中添加偽彩色圖。但是shading_interp開始時(shí)是不可用的(“Enable”屬性值為“off”),只有單擊Plot_first后才會(huì)變?yōu)榭捎?。步驟5:接下來(lái)我們來(lái)編輯M_file。首先,在plot_first_OpeningFcn函數(shù)的最后一行添加如下代碼:set(handles.shading_interp_first, Enable, off
29、);這樣,當(dāng)運(yùn)行GUI時(shí)shading_interp_first控件是不可用的。然后,在plot_first_Callback和shading_interp_first_Callback下同時(shí)添加如下的代碼:axes(handles.axes1);這一句把兩個(gè)控件與坐標(biāo)軸聯(lián)系起來(lái)。接下來(lái)我們?cè)趦蓚€(gè)回調(diào)函數(shù)中填入相關(guān)的繪圖代碼。 在plot_first_Callback下添加如下代碼:x,y,z = peaks;contour(x,y,z,20,k)set(handles.shading_interp_first, Enable, on);前兩句用來(lái)繪圖,最后一句用來(lái)激活shading_inte
30、rp_first控件。 在shading_interp_first_Callback下添加如下代碼:x,y,z = peaks;contour(x,y,z,20,k)hold onpcolor(x,y,z)shading interphold off以上代碼重新繪制了peaks圖形,并在圖像中添加了偽彩色圖。 接下來(lái),就只剩一個(gè)彈出菜單了。在M_file的about_Callback函數(shù)下添加如下代碼:helpdlg(Name:XiongRenhao,StuNo:20064140510,My Infor);helpdlg的第一個(gè)參數(shù)是顯示的內(nèi)容,第二個(gè)參數(shù)是彈出菜單的標(biāo)題。值得注意的是,這兩個(gè)
31、參數(shù)都應(yīng)使用英文,因?yàn)檫@樣才能避免控件不支持中文所帶來(lái)的問題。步驟6:保存你的M_file,現(xiàn)在可以運(yùn)行你的GUI了,如圖9.24。注意此時(shí)的shading_interp按鈕。單擊Plot_first,觀察繪出的圖形,圖9.25。此時(shí)坐標(biāo)軸繪出了指定圖形,且shading_interp按鈕變?yōu)榭捎?。單擊shading_interp,如圖9.26。你可以重復(fù)以上兩步。接下來(lái)單擊Help菜單,單擊About,你會(huì)看到界面的正中出現(xiàn)了如圖9.27的窗口。9.3.2 實(shí)例2:用控件控制圖形的屬性本節(jié)我們?cè)O(shè)計(jì)一個(gè)稍微復(fù)雜的GUI,其基本功能包括:根據(jù)菜單選擇繪制相應(yīng)曲線和曲面,二維曲線形式為sin(ft
32、)和cos(ft),三維曲面包括圓球和圓柱;動(dòng)態(tài)顯示當(dāng)前圖形的名稱;用控件控制圖形屬性,包括圖形的自變量的定義域等。創(chuàng)建步驟簡(jiǎn)要說(shuō)明如下:步驟1:打開GUI Builder,建立空的GUI,并添加相應(yīng)的控件。保存為myGUI.fig結(jié)果如圖9.28所示。表9.3是對(duì)各控件屬性的簡(jiǎn)要說(shuō)明。NameTagStringIntroductionAxes axes1Popup Menupopupmenu1(對(duì)應(yīng)Grid)Grid On/Grid Off打開、關(guān)閉網(wǎng)格popupmenu2(對(duì)應(yīng)Current Curve)sin(x)cos(x)syherecylinder指示當(dāng)前所描繪圖形popupmen
33、u3(對(duì)應(yīng)Style)linecircle平滑曲線、圈點(diǎn)集popupmenu4(對(duì)應(yīng)Extend)-2*pi to 2*pi0 or 2*pi0 to 4* pi自變量x的范圍Static Texttext5Style樣式text2Current Curve當(dāng)前曲線text3Plot Editor繪圖編輯器text4Grid網(wǎng)格text6Extend區(qū)間Push Buttonpushbutton1Update更新視圖步驟2:表9.4是各組件名稱以及其Tag屬性的值。點(diǎn)擊 編輯菜單按鈕,建立如圖9.29所示的菜單。步驟3:編輯m-file。點(diǎn)擊 “M-”按鈕 ,打開M文件編輯器,點(diǎn)擊“Show function”按鈕 選擇相應(yīng)的函數(shù)。 步驟4:將m-file保存為myGUI.m,并運(yùn)行GUI,結(jié)果如圖9.30所示。以下是從使用者的角度,對(duì)GUI實(shí)現(xiàn)功能的一些描述:1.File菜單實(shí)現(xiàn)打開fig文件,打印當(dāng)前GUI、關(guān)閉當(dāng)前GUI的功能。2.2D Plot和3D Plot可以實(shí)現(xiàn)繪制具有默認(rèn)屬性的正弦、余弦曲線和球體、柱面,并可以通過Plot Editor改變一些屬性。當(dāng)要改變曲線屬性時(shí),要先在Plot Editor中選定屬性,然
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代科技在中藥植物油提取中的綠色環(huán)保策略
- 生活用紙?jiān)O(shè)計(jì)新趨勢(shì)創(chuàng)新驅(qū)動(dòng)的消費(fèi)者體驗(yàn)升級(jí)
- 生態(tài)保護(hù)與零碳公園規(guī)劃的融合實(shí)踐
- 國(guó)慶節(jié)活動(dòng)方案活動(dòng)內(nèi)容
- 現(xiàn)代服務(wù)業(yè)的綠色發(fā)展路徑探索
- 小學(xué)勞動(dòng)教育考核方案
- 2024年五年級(jí)英語(yǔ)下冊(cè) Unit 7 Chinese festivals第6課時(shí)說(shuō)課稿 譯林牛津版
- 2024年秋七年級(jí)歷史上冊(cè) 第14課 溝通中外文明的“絲綢之路”說(shuō)課稿 新人教版
- Unit 3 My friends Read and write(說(shuō)課稿)-2024-2025學(xué)年人教PEP版英語(yǔ)四年級(jí)上冊(cè)
- 3 我不拖拉 第一課時(shí)(說(shuō)課稿)2023-2024學(xué)年統(tǒng)編版道德與法治一年級(jí)下冊(cè)
- 房地產(chǎn)工程管理 -中建八局機(jī)電工程質(zhì)量通病治理辦法
- GB/T 6403.4-2008零件倒圓與倒角
- GB/T 2518-2019連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- 企業(yè)合規(guī)管理-課件
- 火電廠安全工作規(guī)程
- GB∕T 33047.1-2016 塑料 聚合物熱重法(TG) 第1部分:通則
- 電力業(yè)務(wù)許可證豁免證明
- 特發(fā)性肺纖維化IPF
- FIDIC國(guó)際合同條款中英文對(duì)照.doc
- 建筑工程資料歸檔立卷分類表(全)
- 個(gè)人勞動(dòng)仲裁申請(qǐng)書
評(píng)論
0/150
提交評(píng)論