MATLAB圖形界面制作(GUI)與句柄圖形.ppt
《MATLAB圖形界面制作(GUI)與句柄圖形.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《MATLAB圖形界面制作(GUI)與句柄圖形.ppt(45頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
2020/5/2,1,MATLAB圖形界面制作(GUI),2020/5/2,2,圖形用戶界面的作用,假如進(jìn)行數(shù)據(jù)分析、解方程等計(jì)算結(jié)果比較單一的工作,那么一般不會(huì)考慮GUI的制作。但是如果想向別人提供應(yīng)用程序,想進(jìn)行某種技術(shù)、方法的演示,想制作一個(gè)供反復(fù)使用且操作簡單的專用工具,那么圖形用戶界面也許是最好的選擇之一。,2020/5/2,3,設(shè)計(jì)原則,由于要求不同,設(shè)計(jì)出來的界面也就千差萬別。但是,自從人們開始設(shè)計(jì)圖形界面以來,界面設(shè)計(jì)的評(píng)判標(biāo)準(zhǔn)卻沒有太大的變化。簡單來說,一個(gè)好的界面應(yīng)遵循以下三個(gè)原則:(1)簡單性:設(shè)計(jì)界面時(shí),力求簡潔、直觀、清晰地體現(xiàn)出界面的功能和特征。(2)一致性:所謂一致性有兩層含義:一是讀者自己開發(fā)的界面風(fēng)格要盡量一致;二是新設(shè)計(jì)的界面要與其他已有的界面風(fēng)格不要截然相左。這是因?yàn)橛脩粼诔醮问褂眯陆缑鏁r(shí),總習(xí)慣于憑經(jīng)驗(yàn)進(jìn)行試探。比方說,圖形顯示區(qū)常安排在界面左半邊,而按鍵等控制區(qū)被排在右側(cè)。(3)其他考慮因素:除了以上對(duì)界面的靜態(tài)要求外,還應(yīng)注意界面的動(dòng)態(tài)性能。如界面對(duì)用戶操作的響應(yīng)要迅速、連續(xù);對(duì)持續(xù)時(shí)間較長的運(yùn)算,要給出等待時(shí)間提示,并允許用戶中斷運(yùn)算。,2020/5/2,4,一般制作步驟,界面制作包括界面設(shè)計(jì)和程序?qū)崿F(xiàn)。具體制作步驟如下:(1)分析界面所要求實(shí)現(xiàn)的主要功能,明確設(shè)計(jì)任務(wù)。(2)構(gòu)建界面草圖,并站在使用者的角度來審查草圖。(3)按構(gòu)思的草圖.制作(靜態(tài))界面并檢查。(4)編寫界面動(dòng)態(tài)功能的程序,對(duì)功能進(jìn)行逐項(xiàng)檢查。[說明]以上過程,僅是一般原則。在設(shè)計(jì)中,步驟之間也許要交叉執(zhí)行或復(fù)合執(zhí)行。設(shè)計(jì)和實(shí)現(xiàn)過程往往需要反復(fù)修改才能獲得滿意的界面。建議先進(jìn)行界面布局編碼,后進(jìn)行動(dòng)態(tài)交互功能的編碼。,2020/5/2,5,界面編程需要注意的事項(xiàng),用戶界面適合軟件的功能(合適性)。是指用戶界面與軟件功能相融洽的程度。要避免用戶的誤解、費(fèi)解等。另外,不能為適應(yīng)某種體系結(jié)構(gòu)的優(yōu)勢(shì)而導(dǎo)致界面的不合適性。容易理解。如果通過界面難以理解界面的意圖,使用起來一定費(fèi)力。容易理解是容易應(yīng)用的前提。要做到這一點(diǎn):(1)界面中不能有錯(cuò)字。(2)圖標(biāo)按鈕含義直觀明了。(3)界面元素提供充分而必要的提示。(4)界面結(jié)構(gòu)能夠清晰的反映工作流程,以便用戶操作。及時(shí)反饋信息。防錯(cuò)處理。,風(fēng)格一致和必要的個(gè)性化。風(fēng)格一致的好處是可以減少用戶的記憶量,減少出錯(cuò)幾率,并迅速積累操作經(jīng)驗(yàn)。必要個(gè)性化是使用戶對(duì)軟件留下深刻印象。合理布局。合理色彩。難,不同的人對(duì)顏色的喜好不同。另外不可過分依靠色彩,因?yàn)橛脩粲锌赡苁巧せ蛏?。適應(yīng)用戶群體和國際化。最少的操作步驟。可以復(fù)用。,不同的界面效果直接影響相關(guān)感受,所以精心設(shè)計(jì)很有必要。請(qǐng)看示例,2020/5/2,6,設(shè)計(jì)過程,,是否滿足要求,添加動(dòng)態(tài)功能,制作靜態(tài)界面,構(gòu)建界面草圖,并審查,明確設(shè)計(jì)任務(wù),,2020/5/2,7,示例,,好的界面,2020/5/2,8,設(shè)計(jì)工具(GUIDE),為了能夠簡單、方便地進(jìn)行GUI的設(shè)計(jì)與開發(fā)工作,MATLAB提供了一套方便、實(shí)用的GUI設(shè)計(jì)工具。MATLAB中的GUI設(shè)計(jì)工具包括以下幾個(gè):對(duì)象設(shè)計(jì)編輯器(LayoutEditor)(有的書上成為布局編輯器):在圖形窗口內(nèi)創(chuàng)建、安排各種對(duì)象。菜單編輯器(MenuEditor):創(chuàng)建、設(shè)置、修改下拉式菜單和內(nèi)容式菜單;對(duì)象屬性查看器(PropertyInspector):可查看每個(gè)對(duì)象的屬性值,也可修改、設(shè)置對(duì)象的屬性值;,2020/5/2,9,對(duì)象設(shè)計(jì)編輯器(LayoutEditor),在MATLAB命令窗口內(nèi),選擇File主菜單的New子菜單,會(huì)看到一個(gè)GUI的二級(jí)子菜單,單擊它,就會(huì)顯示對(duì)象設(shè)計(jì)編輯器(LayoutEditor);也可以在MATLAB命令窗口的命令行上輸入guide,顯示對(duì)象設(shè)計(jì)編輯器。啟動(dòng)窗口如右圖所示。,,2020/5/2,10,對(duì)象設(shè)計(jì)編輯器(LayoutEditor),,2020/5/2,11,菜單編輯器,利用菜單編輯器,可以創(chuàng)建、設(shè)置、修改下拉式菜單和內(nèi)容式菜單。從對(duì)象設(shè)計(jì)編輯器界面的工具條上或從菜單欄中Tools的下拉菜單中選擇MenuEditor,就可以看到菜單編輯器(MenuEditor)的界面,如右圖所示。,,2020/5/2,12,菜單編輯器(2),圖中左上角第一個(gè)按鈕用于創(chuàng)建下拉式菜單。用戶可以通過點(diǎn)擊它,來創(chuàng)建下拉式主菜單。第二個(gè)按鈕用于創(chuàng)建下拉式主菜單的子菜單,在選中已經(jīng)創(chuàng)建的下拉式主菜單后,可以單擊這個(gè)按鈕來創(chuàng)建選中的下拉式主菜單的子菜單。選中創(chuàng)建的某個(gè)下拉式菜單,菜單編輯器的右邊就會(huì)顯示該菜單的有關(guān)屬性,可以在這里設(shè)置、修改菜單的屬性。菜單編輯器界面的左下角有兩個(gè)按鈕,選擇第一個(gè)按鈕,可以創(chuàng)建下拉式菜單,選擇第二個(gè)按鈕,可以創(chuàng)建contextMenu菜單(類似于彈出式菜單)。選擇它后,圖中左上角的第三個(gè)按鈕就會(huì)變成可用,單擊它可以創(chuàng)建ContextMenu主菜單。在選中已經(jīng)創(chuàng)建的ContextMenu主菜單后,可以單擊第二個(gè)按鈕創(chuàng)建選中的ContextMenu主菜單的子菜單。與下拉式菜單一樣,選中創(chuàng)建的某個(gè)ContextMenu菜單,菜單編輯器的右邊就會(huì)顯示該菜單的有關(guān)屬性,可以在這里設(shè)置、修改菜單的屬性。,2020/5/2,13,對(duì)象屬性查看器,利用對(duì)象屬性查看器,可以查看每個(gè)對(duì)象的屬性值,也可以修改、設(shè)置對(duì)象的屬性值,從對(duì)象設(shè)計(jì)編輯器界面工具條,或者選擇view菜單下的InspectProperty子菜單,就可以看到對(duì)象屬性查看器的界面。另外,在MATLAB命令窗口的命令行上輸入inspect,也可以看到對(duì)象屬性查看器。如右圖所示。,,2020/5/2,14,圖形界面制作-菜單,在絕大多數(shù)的圖形用戶界面下,都包含有菜單。通過選擇各級(jí)菜單,可以執(zhí)行相應(yīng)的命令,實(shí)現(xiàn)相應(yīng)的功能。一般地,從菜單的標(biāo)題或名字可以大概了解該菜單的功能。在Windows系統(tǒng)中,菜單一般位于用戶圖形界而的頂端。例如,MATLAB的主窗口中,就有一個(gè)主菜單欄,包括File、Edit、View、Help等主菜單。在各級(jí)主菜單下,還有相應(yīng)的子菜單。在MATLAB圖形用戶界面(GUI)設(shè)計(jì)中,有兩種菜單類型,分別是下拉式菜單類型Uimenu和內(nèi)容式菜單類型Uicontextmenu。,2020/5/2,15,圖形界面制作-菜單(2),菜單的建立:在MATLAB中,可以通過命令行方式和GUI設(shè)計(jì)工具中的菜單編輯器兩種方式建立菜單:(1)命令行方式:在命令行方式下,可以通過函數(shù)uimenu建立下拉式菜單對(duì)象。(2)GUI設(shè)計(jì)工具-菜單編輯器方式。菜單的屬性:利用函數(shù)uimenu建立菜單時(shí),可以定義菜單屬性的屬性值;利用函數(shù)set,可以設(shè)置、改變屬性的屬性值;利用get函數(shù),可以獲得菜單屬性的屬性值,也可以通過PropertyInspectorGUI設(shè)計(jì)工具來設(shè)置、修改菜單屬性值。,2020/5/2,16,圖形界面制作-控件,在絕大多數(shù)的圖形用戶界面下,都包含有控件??丶菆D形對(duì)象,它與菜單一起用于建立圖形用戶界面。通過使用各種類型的控件,可以建立起操作簡便,功能強(qiáng)大的圖形用戶界面。MATLAB也提供了多種控件,可以把它們放置在圖形窗口的任何位置,并用鼠標(biāo)激活它們。MATLAB支持的控件對(duì)象有10種。,2020/5/2,17,控件對(duì)象類型,MATLAB支持復(fù)選框Checkboxes、可編輯文本框Edittext,框架Frames、列表框Listboxes、彈出式菜單Pop-upmenus、命令按鈕Pushbuttons、單選按鈕Radiobuttons、滑標(biāo)Sliders、靜態(tài)文本框Statictext、開關(guān)按鈕Togglebuttons等十種類型的控件對(duì)象,2020/5/2,18,控件對(duì)象類型(1),(1)復(fù)選框(Checkboxes)復(fù)選框有一個(gè)標(biāo)志文本,在標(biāo)志文本的左邊有一個(gè)小方框。它對(duì)于用戶進(jìn)行大量的獨(dú)立選擇很有用。為了激活復(fù)選框,可以使用鼠標(biāo)單擊復(fù)選框?qū)ο?,使?fù)選框在選中與不選中狀態(tài)間進(jìn)行切換。當(dāng)選中時(shí),復(fù)選框的value屬性值是1;當(dāng)沒有選中時(shí),復(fù)選框的小方框內(nèi)為空,此時(shí)復(fù)選框的value屬性值為0。復(fù)選框的Sytle屬性值是checkbox。(2)可編輯文本框(Edittext)當(dāng)需要輸入文本時(shí),可以使用可編輯文本框。通過可編輯文本框,用戶可以方便地輸入或修改已經(jīng)存在的文本串,這與文本編輯器的功能是一樣的??删庉嬑谋究虻腟tring屬性中存儲(chǔ)輸入的文本串??删庉嬑谋究蚩梢允菃涡谢蚨嘈形谋灸J?。當(dāng)可編輯文本框是單行模式時(shí),只允許輸入單行文本串;當(dāng)可編輯文本框是多行模式時(shí),可以輸入多行文本。可編輯文本框的Style屬性值是edit。,2020/5/2,19,控件對(duì)象類型(2),(3)框架(Frames)框架對(duì)象是在圖形窗口內(nèi),視覺上封閉起來的一個(gè)區(qū)域,只有控件可以在框架中使用。一般把作用相關(guān)的一組控件用框架框起來,這樣的用戶界面很容易被用戶理解??蚣軟]有Callback例程??蚣苁遣煌该鞯?,所以設(shè)置框架與框架中控件的順序很重要。如果框架內(nèi)控件先于框架被設(shè)置,那么框架設(shè)置后就會(huì)覆蓋原先設(shè)置的控件?!愕兀瑧?yīng)在定義框架后再定義框架中的控件??蚣艿膕tyle屬件值是frame。(4)列表框(Listboxes)列表框中列出其String屬性的字符串項(xiàng)。用戶可以方便的選擇一個(gè)或多個(gè)列表項(xiàng)。列表框的Max和Min屬性控制選擇模式;Value屬性標(biāo)明選擇的列表項(xiàng)的索引值。當(dāng)列表框上的鼠標(biāo)松開后,MATLAB會(huì)調(diào)用Callback例程。一般地,單擊與雙擊列表框的效果是不一樣的。列表框的Style屬性值是listbox。,2020/5/2,20,控件對(duì)象類型(3),(5)彈出式菜單(Pop-upmenus)彈出式菜單是一個(gè)顯示信息的框,框的右邊有一個(gè)下拉式箭頭。單擊下拉式箭頭,就會(huì)顯示一個(gè)列表,里面包含String屬性定義的屬性值。當(dāng)沒有打開列表時(shí),信息框內(nèi)顯示的是當(dāng)前選擇的表項(xiàng)。當(dāng)打開列表,從中選揮一個(gè)表項(xiàng)并單擊后,該表項(xiàng)就會(huì)出現(xiàn)在信息顯示框內(nèi)。彈出式菜單對(duì)于用戶進(jìn)行大量的互相不同的選擇是很有用的。如果不用彈出式菜單,那么就必須設(shè)置大量互不相同的單選按鈕。彈出式菜單的Style屬性值是popupmenu。(6)命令按鈕(Pushbuttons)命令按鈕是一個(gè)矩形的凸出對(duì)象。在命令按鈕對(duì)象上標(biāo)有一個(gè)字符串,用于標(biāo)識(shí)該命令按鈕。單擊命令按鈕,會(huì)產(chǎn)生相應(yīng)的動(dòng)作。用鼠標(biāo)單擊命令按鈕后,命令按鈕會(huì)凹下,但當(dāng)松開鼠標(biāo)后,命令按鈕又會(huì)彈起,這與下面的開關(guān)按鈕不同。命令按鈕的Style屬性值是Pushbunton。,2020/5/2,21,控件對(duì)象類型(4),(7)單選按鈕(Radiobuttons)與復(fù)選框相似,單選按鈕有一個(gè)標(biāo)志文本,在標(biāo)志文本的左邊有一個(gè)小圓圈,它對(duì)于用戶進(jìn)行功能互斥的選擇很有用。在一組單選按鈕中,一次只能有一個(gè)單選按鈕被選中,這與可以同時(shí)選中多個(gè)的復(fù)選框不同。為了激活單選按鈕,可以使用鼠標(biāo)單擊單選按鈕對(duì)象,使單選按鈕在選中與不選中狀態(tài)間進(jìn)行切換。當(dāng)選中時(shí),復(fù)選框的小圓圈內(nèi)有一個(gè)點(diǎn),此時(shí)單選按鈕的value屬性值是1;當(dāng)沒有選中時(shí),單選按鈕的小圓圈內(nèi)為空,此時(shí)單選按鈕的value屬性值為0。單選按鈕的style屬性值是radiobutton。(8)滑標(biāo)(Sliders)其功能類似于滾動(dòng)條,它由三個(gè)部分組成,分別是滾動(dòng)槽、滾動(dòng)槽內(nèi)的指示條和滾動(dòng)槽兩端的箭頭。其中,滾動(dòng)槽表明滑標(biāo)的有效值范圍,指示條表明滑標(biāo)的當(dāng)前值,通過箭頭可以左右移動(dòng)指示條。用戶在選中指示條后通過鼠標(biāo)拖動(dòng)指示條,可以改變滑標(biāo)的值,也可以通過單擊兩端的箭頭來改變滑標(biāo)的值??梢酝ㄟ^函數(shù)設(shè)置滑標(biāo)的最小值、最大值與當(dāng)前值?;瑯?biāo)的Style屬性值是slider。,2020/5/2,22,控件對(duì)象類型(5),(9)靜態(tài)文本框(Statictext)靜態(tài)文本框靜態(tài)顯示文本字符申。靜態(tài)文本框通常用于顯示別的控件的有義信息。例如,如果與滑標(biāo)相連,可以在靜態(tài)文本框中顯示滑標(biāo)的當(dāng)前值。與可編輯文本框不同,用戶不能交量地改變靜態(tài)文本框中的內(nèi)容。靜態(tài)文本框沒有Callback例程。靜態(tài)文本框的Style屬性值是text。(10)開關(guān)按鈕(Togglebuttons)開關(guān)按鈕的外觀與命令按鈕類似,是一個(gè)矩形的凸出對(duì)象,同時(shí)在開關(guān)按鈕對(duì)象上也標(biāo)有一個(gè)字符串,用于標(biāo)識(shí)該開關(guān)按鈕。與命令按鈕不同的是,當(dāng)用鼠標(biāo)單擊開關(guān)按鈕并松開后,開關(guān)按鈕不會(huì)彈起。再單擊一次,它才會(huì)彈起,這可以表明開關(guān)按鈕的狀態(tài)。單擊開關(guān)按鈕,會(huì)產(chǎn)生相應(yīng)的動(dòng)作,執(zhí)行相應(yīng)的Callback例程。在進(jìn)行工具條的設(shè)計(jì)時(shí),開關(guān)按鈕時(shí)非常有用的。開關(guān)按鈕的Style屬性值是togglebutton。,2020/5/2,23,控件的建立,與菜單對(duì)象一樣,可以通過命令行方式與GUI設(shè)計(jì)工具兩種方式來建立控件。(1)命令行方式:在命令行方式下,可以通過函數(shù)uicontrol來建立控件對(duì)象。(2)GUI設(shè)計(jì)工具:利用GUI設(shè)計(jì)工具中的對(duì)象設(shè)計(jì)編輯器(LayoutEditor),可以容易地創(chuàng)建MATLAB支持的各種控件,而且通過對(duì)象屬性查看器(ObjectInspector),可以方便地修改、設(shè)置創(chuàng)建的控件的屬性值。注意:命令行方式常常用于動(dòng)態(tài)修改界面外觀,比如執(zhí)行到某種功能出現(xiàn)某個(gè)按鈕,GUI設(shè)計(jì)工具常常用于最初的界面設(shè)計(jì)。,2020/5/2,24,控件的屬性,在命令行的方式下或者GUI設(shè)計(jì)方式下,可以方便的設(shè)置、修改控件屬性的屬性值。在命令行方式下,利用uicontrol建立控件時(shí),可以定義控件屬性的屬性值;利用函數(shù)set可以設(shè)置、改變屬性的屬性值;利用函數(shù)get可以獲得屬性的屬性值。在GUI設(shè)計(jì)方式下,也可以通過PropertyInspectorGUI設(shè)計(jì)工具來設(shè)置控件的屬性值。,2020/5/2,25,編寫GUI代碼(1),當(dāng)我們利用GUIDE完成一個(gè)應(yīng)用程序界面布局設(shè)計(jì)后,保存設(shè)計(jì)結(jié)果時(shí),MATLAB將其保存為后綴為.fig的一個(gè)文件,并自動(dòng)生成的一個(gè)與之同名的M文件。這個(gè)M文件是控制GUI的一個(gè)程序框架,正是這個(gè)程序框架,促進(jìn)了一種高效穩(wěn)健的編程風(fēng)格。應(yīng)用M文件包含了callback函數(shù)在內(nèi)的所有代碼,每一個(gè)回調(diào)函數(shù)在M文件中用子程序的形式出現(xiàn)。,GUIDE自動(dòng)為其添加到M文件中的callback子程序命名,它還將回調(diào)屬性的值設(shè)置為一個(gè)字符串,保證用戶在激活控件時(shí)運(yùn)行這一子程序。我們已經(jīng)看到,在GUI布局中添加元件時(shí),GUIDE先為該元件的Tag屬性分配一個(gè)數(shù)值,再以此命名回調(diào)函數(shù)。比方說,在布局中添加的第一個(gè)pushbutton被稱為pushbutton1,GUIDE在M文件中添加的callback子程序被命名為pushbutton1_Callback;我們?nèi)绻胍獙?shí)現(xiàn)按下該按鈕進(jìn)行某種操作,就可以在應(yīng)用M文件中找到pushbutton1_Callback的位置,對(duì)該子程序進(jìn)行編碼,以實(shí)現(xiàn)我們需要的操作即可。,2020/5/2,26,GUI編程舉例,功能:(1)在點(diǎn)擊【Gridon】或【Gridoff】按鈕時(shí),在軸上畫出或刪除“分格線”;缺省時(shí),無分格線。(2)在菜單【Options】下,有2個(gè)下拉菜單項(xiàng)【Boxon】和【Boxoff】;其功能和兩個(gè)按鈕的一樣。,2020/5/2,27,第一步,打開GUIDE工具,編輯初始界面。,,2020/5/2,28,第二步,設(shè)置各控件的屬性,,2020/5/2,29,第三步,調(diào)整各控件的位置,,2020/5/2,30,第四步,制作菜單(利用MenuEditor),2020/5/2,31,第五步,M文件編程運(yùn)行結(jié)果,2020/5/2,32,句柄圖形,圖形細(xì)致處理和界面編程的基礎(chǔ),2020/5/2,33,句柄圖形對(duì)象,MATLAB圖形繪制系統(tǒng)是由兩個(gè)層次組成的:用于提供用戶友好的繪圖功能的高級(jí)層次和用于創(chuàng)建及操作線、面、文字、投影等基本圖形對(duì)象的低級(jí)函數(shù)。高級(jí)功能是建立在低級(jí)函數(shù)的基礎(chǔ)之上的,它為用戶的圖形繪制提供了極大的方便,因?yàn)樗灰笥脩羧ゲ僮骶€、面等的細(xì)節(jié)。但是使用低級(jí)的繪圖函數(shù)也有其優(yōu)越性,它能提供對(duì)圖形的各個(gè)基本對(duì)象的更細(xì)致的控制,不僅可以產(chǎn)生更加復(fù)雜的圖形,也為動(dòng)態(tài)的繪制圖形提供了基礎(chǔ)。MATLAB的這個(gè)低級(jí)函數(shù)系統(tǒng)稱為句柄圖形(HandleGraphics)。,2020/5/2,34,圖形對(duì)象和對(duì)象句柄,圖形對(duì)象MATLAB把用于數(shù)據(jù)可視和界面制作的基本繪圖要素稱為句柄圖形對(duì)象(HandleGraphicobject)。構(gòu)成MATLAB句柄圖形體系的共有11個(gè)圖形對(duì)象,每個(gè)圖形對(duì)象都可以被獨(dú)立操作。句柄每個(gè)具體對(duì)象都有一個(gè)“與生俱來、終生不變”的獨(dú)特標(biāo)志,即句柄(Handle)。句柄是存取操作圖形對(duì)象的唯一規(guī)范標(biāo)識(shí)符。不同對(duì)象的句柄不可能重復(fù)和混淆。,2020/5/2,35,句柄圖形對(duì)象的層次結(jié)構(gòu),圖形對(duì)象包括:根屏幕(RootScreen)、圖(Figure)、軸(Axes)、線(Line)、塊(Pathes)、面(Surface)、圖像(Image)、文字(Text)、用戶界面控制(UserInterfaceControl)和用戶界面菜單(UserInterfaceMesnus)。這些對(duì)象的層次結(jié)構(gòu)為下圖樹狀結(jié)構(gòu)所示:,2020/5/2,36,句柄圖形對(duì)象的層次結(jié)構(gòu)(2),處于樹結(jié)構(gòu)最高層的圖形對(duì)象是根屏幕。是所有其他圖形對(duì)象的“父(parent)”。圖形窗有三個(gè)不同的“子”:軸、界面控制和界面菜單。后兩類用于制作用戶圖形界面,實(shí)現(xiàn)對(duì)人機(jī)交互操作。軸有7種不同類型的“子”:線、面、方、塊、圖像、字和光。,2020/5/2,37,圖形對(duì)象的屬性,屬性所有的圖形對(duì)象都有一組定義和刻畫其外貌特征的屬性(Properties)。屬性又由兩部分組成:屬性名和屬性值,即屬性二元對(duì)(Property_Name,Property_Value)在操作屬性的指令中,屬性名和屬性值總是成對(duì)出現(xiàn)。屬性名是英文字符串。該英文詞組每個(gè)單詞首字母大寫且單詞間沒有空格。例如:’LineStyle’。這樣書寫便于閱讀。但在指令中引用屬性名時(shí),為用戶書寫方便,MATLAB采取了兩個(gè)措施:第一,不分字母大小寫,都同樣識(shí)別,第二,只要不引起歧義,屬性名不用寫全。如:用‘LineStyle’時(shí)只輸入‘line’就可以識(shí)別。缺省屬性在創(chuàng)建圖形對(duì)象時(shí),MATLAB并不需要用戶對(duì)每個(gè)屬性加以定義。因?yàn)橹灰脩魶]有特別指定,MATLAB會(huì)自動(dòng)給每個(gè)圖形對(duì)象的每個(gè)屬性賦予“廠家定義(Factory-defined)”的屬性值。如果用戶對(duì)MATLAB默認(rèn)的屬性不滿意,可以通過指令對(duì)相應(yīng)的屬性進(jìn)行修改,或在創(chuàng)建圖形對(duì)象的時(shí)候就直接指定。,2020/5/2,38,圖形對(duì)象的操作,圖形對(duì)象的創(chuàng)建指令除根屏幕外,所有圖形對(duì)象都由與之同名的指令創(chuàng)建。這些指令均為MATLAB內(nèi)建函數(shù),每個(gè)指令在創(chuàng)建對(duì)象的同時(shí),還可返回該對(duì)象的句柄。每個(gè)底層函數(shù)只能創(chuàng)建這11個(gè)圖形對(duì)象中的一個(gè),并將它們置于適當(dāng)?shù)母篙厡?duì)象之中。例如:line指令的操作是在當(dāng)前畫軸上利用缺省屬性畫“線”。如果調(diào)用此指令前圖形窗口和畫軸不存在,,則MATLAB會(huì)自動(dòng)創(chuàng)建它們,如果已經(jīng)存在,則這條“線”將畫在當(dāng)前軸上,且不影響該軸上的已有的其他對(duì)象。(這與高層繪圖指令不同)。這個(gè)特點(diǎn)非常重要,特別是當(dāng)圖形僅有一部分需要改變時(shí)。,2020/5/2,39,圖形對(duì)象創(chuàng)建指令一覽表,2020/5/2,40,圖形對(duì)象的句柄獲得方法,從圖形創(chuàng)建指令獲取句柄H=GraphicCommand(…)如:H=figure(n)追溯法獲取句柄如果一個(gè)對(duì)象的句柄已知,可以用如下格式獲得其父或子對(duì)象的句柄。H_pa=get(H_known,’Parent’)H_ch=get(H_known,’Children’)當(dāng)前對(duì)象句柄的獲取MATLAB有如下三個(gè)專用獲取圖形句柄的指令:前兩個(gè)是直接指令,后一個(gè)是和鼠標(biāo)配合使用。(1)gcf:獲得當(dāng)前圖形窗口的句柄(2)gca:獲得當(dāng)前軸的句柄;(3)gco:獲得當(dāng)前對(duì)象的句柄(被鼠標(biāo)最近點(diǎn)擊的圖形對(duì)象):根據(jù)對(duì)象的特性獲取句柄H=findobj(H_ori,PN,PV)在H_ori指定的對(duì)象上,尋找與屬性對(duì)(PN,PV)匹配的對(duì)象句柄。,2020/5/2,41,句柄獲取示例,例1:創(chuàng)建時(shí)獲得句柄t=0:0.01:2*pi;h=plot(t,sin(t),’b’);例2:追溯法獲得句柄H_pa=get(h,’Parent’);例3:獲得當(dāng)前對(duì)象句柄H5=gcf;H3=gca;H4=gco;例4:根據(jù)對(duì)象特征獲得句柄H6=findobj(H5,’color’,’b’);,2020/5/2,42,對(duì)象屬性的獲取和設(shè)置,創(chuàng)建對(duì)象時(shí)設(shè)置屬性H=GraphicCommand(…,PN,PV)GraphicCommand代表所有合法的MATALB高層或低層繪圖指令,(PN,PV)是屬性名和屬性值構(gòu)成的屬性對(duì),屬性對(duì)的數(shù)目沒有限制。Get和setget(H)獲取H句柄對(duì)象所有屬性的當(dāng)前值get(H,PN)獲取H句柄對(duì)象由PN屬性名指定的屬性的當(dāng)前值set(H)顯示H句柄對(duì)象的所有可設(shè)置屬性名和全部可選屬性值set(H,PN)顯示H句柄對(duì)象PN指定屬性名的全部供選屬性值set(H,PN,PV,…)設(shè)置H句柄對(duì)象的PN屬性名取PV屬性值,2020/5/2,43,對(duì)象屬性查詢和獲取示例,例:t=0:0.01:2*pi;h=plot(t,sin(t),’b’);Get(h);Set(h,’color’,’r’);Set(h,’linestyle’,’:’),2020/5/2,44,句柄圖形對(duì)象在界面編程中的應(yīng)用,一個(gè)主要應(yīng)用是界面中控件之間的數(shù)據(jù)傳遞。例如:一個(gè)界面上含有一個(gè)Edit。如何獲取Edit的內(nèi)容并被其他控件所利用?思路:取該控件的句柄,獲得其string屬性的屬性值,傳給其他控件應(yīng)用。,2020/5/2,45,界面編程中對(duì)話框的利用,利用公共對(duì)話框,可以減少編程工作量,且具有良好的界面風(fēng)格。公共對(duì)話框主要有以下幾種:文件打開對(duì)話框(uigetfile)文件保存對(duì)話框(uiputfile)顏色設(shè)置對(duì)話框(uisetcolor)字體設(shè)置對(duì)話框(uisetfont)打印對(duì)話框(pagesetupdlg)打印預(yù)覽對(duì)話框(printpreview),利用MatLab專用對(duì)話框,可以使程序更加友好清晰。MatLab專用對(duì)話框有以下幾種:錯(cuò)誤信息對(duì)話框(errordlg)幫助對(duì)話框(helpdlg)輸入對(duì)話框(inputdlg)列表對(duì)話框(listdlg)信息提示對(duì)話框(msgbox)問題提示對(duì)話框(questdlg)進(jìn)程條(waitbar)警告信息對(duì)話框(warndlg),- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- MATLAB 圖形界面 制作 GUI 句柄 圖形
鏈接地址:http://m.appdesigncorp.com/p-11798104.html