




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第七章 matlab界面設計 圖形用戶界面(GUI)是指由窗口、菜單、圖標、光標、按鍵、對話框和文本等各種圖形對象組成的用戶界面。它讓用戶定制用戶與Matlab的交互方式,而命令窗口不是唯一與Matlab的交互方式。 用戶界面是用戶與計算機進行信息交流的方式。計算機在屏幕顯示圖形和文本,若有揚聲器還可產(chǎn)生聲音。用戶通過輸入設備(如:鍵盤、鼠標、跟蹤球、繪制板或麥克風),與計算機通訊。用戶界面設定了如何觀看和如何感知計算機、操作系統(tǒng)或應用程序。通常,多是根據(jù)悅目的結構和用戶界面功能的有效性來選擇計算機或程序。 用戶通過鼠標或鍵盤選擇、激活這些圖形對象,使計算機產(chǎn)生某種動作或變化。 Matlab中
2、設計圖形用戶界面的方法有兩種:使用可視化的界面環(huán)境和通過編寫程序。 由上一講可知:用戶菜單、用戶控件和對話框是和坐標軸處于同一層次的,都是圖形窗口的子對象。 基本圖形對象分為控件對象和用戶界面菜單對象,簡稱控件和菜單。圖形用戶界面設計工具的啟動圖形用戶界面設計工具的啟動方式:1. 命令方式圖形用戶界面GUI設計工具的啟動命令為guide,格式為:guide功能:啟動GUI設計工具,并建立名字為untitled.fig的圖形用戶界面。 功能:啟動GUI設計工具,并打開已建立的圖形用戶界面filename。 guide filename2. 菜單方式 在Matlab的主窗口中,選擇File菜單中的
3、New菜單項,再選擇其中的GUI命令,就會顯示GUI的設計模板。Matlab為GUI設計一共準備了4種模板,分別是:Blank GUI(Default)(空白模板,默認);GUI with Uicontrols(帶控件對象的GUI模板); GUI with Axes and Menu(帶坐標軸與菜單的GUI模板);Modal Question Dialog(帶模式問題對話框的GUI模板)。 當用戶選擇不同的模板時,在GUI設計模板界面的右邊就會顯示出與該模板對應的GUI圖形。 圖形用戶界面設計工具啟動時模板選擇對話框 圖形用戶界面設計窗口 圖形用戶界面GUI設計窗口由菜單欄、工具欄、控件工具欄
4、以及圖形對象設計區(qū)等4個功能區(qū)組成。 在GUI設計模板中選中一個模板,然后單擊OK按鈕,就會顯示GUI設計窗口。選擇不同的GUI設計模式時,在GUI設計窗口中顯示的結果是不一樣的。左圖為空白GUI模板情形 GUI設計窗口的菜單欄有File、Edit、View、Layout、Tools和Help 6個菜單項,使用其中的命令可以完成圖形用戶界面的設計操作。 編輯工具在菜單欄的下方,提供了常用的工具;設計工具區(qū)位于窗口的左半部分,提供了設計GUI過程中所用的用戶控件;空間模板區(qū)是網(wǎng)格形式的用戶設計GUI的空白區(qū)域。 在GUI設計窗口創(chuàng)建圖形對象后,通過雙擊該對象,就會顯示該對象的屬性編輯器。 Mat
5、lab提供了一套可視化的創(chuàng)建圖形窗口的工具,使用圖形用戶界面開發(fā)環(huán)境可方便地創(chuàng)建GUI應用程序,它可以根據(jù)用戶設計的GUI布局,自動生成M文件的框架,用戶使用這一框架編制自己的應用程序。主要包括:一、圖形用戶界面開發(fā)環(huán)境(GUIDE)對象瀏覽器(Object Browser)用于獲得當前Matlab圖形用戶界面程序中的全部對象信息,對象的類型,同時顯示控件的名稱和標識,在控件上雙擊鼠標可以打開該控件的屬性編輯器;布局編輯器(Layout Edtor)在圖形窗口中創(chuàng)建及布置圖形對象。布局編輯器是可以啟動用戶界面的控制面板,上述工具都必須從布局編輯器中訪問,用guide命令可以啟動,或在啟動平臺窗
6、口中選擇GUIDE來啟動布局編輯器;幾何排列工具(Alignment Tool)調(diào)整各對象相互之間的幾何關系和位置;屬性查看器(Property Inspector)查詢并設置屬性值;菜單編輯器(Menu Editor)創(chuàng)建、設計、修改下拉式菜單和快捷菜單;Tab順序編輯器(Tab Order Editor)用于設置當用戶按下鍵盤上的Tab鍵時,對象被選中的先后順序。 在Matlab 5中, GUI的設計是以 M文件的編程形式實現(xiàn)的,GUI的布局代碼存儲在M文件和MAT文件中,而在Matlab 6中有了很大的改變, Matlab 6將GUI的布局代碼存儲在 FIG文件中,同時還產(chǎn)生一個M文件用
7、于存儲調(diào)用函數(shù),在M文件中不再包含GUI的布局代碼,在開發(fā)應用程序時代碼量大大減少。 用于從控件選擇板上選擇控件對象并放置到布局區(qū)去,布局區(qū)被激活后就成為圖形窗口。 在命令窗口輸入GUIDE命令或點擊工具欄中的guide圖標都可以打開空白的布局編輯器,在命令窗口輸入GUIDE filename 可打開一個已存在的名為filename圖形用戶界面。1. 布局編輯器(Layout editor) 將控件對象放置到布局區(qū) 用鼠標選擇并放置控件到布局區(qū)內(nèi); 移動控件到適當?shù)奈恢茫?改變控件的大小; 選中多個對象的方法。一個簡單的布局示例 如所建立的布局還沒有進行存儲,可用File菜單下的Save As
8、菜單項(或工具欄中的對應項),按輸入的文件的名字,在激活圖形窗口的同時將存儲一對同名的M文件和帶有.fig擴展名的FIG文件。 激活圖形窗口 運行GUI程序 在命令窗口直接鍵入文件名或用openfig, open或hgload命令運行GUI程序。 布局編輯器參數(shù)設置選File菜單下的Preferences菜單項打開參數(shù)設置窗口,點擊樹狀目錄中的GUIDE,即可以設置布局編輯器的參數(shù)。 布局編輯器的彈出菜單 在任一控件上按下鼠標右鍵,會彈出一個菜單,通過該菜單可以完成布局編輯器的大部分操作。2. 位置調(diào)整工具(Alignment tool) 在選中多個對象后,可以方便的通過對象位置調(diào)整器調(diào)整對象
9、間的對齊方式和距離。 對象位置調(diào)整器中的第一欄是垂直方向的位置調(diào)整,第二欄是水平方向的位置調(diào)整。 利用位置調(diào)整工具,可以對GUI對象設計區(qū)內(nèi)的多個對象的位置進行調(diào)整。位置調(diào)整工具的打開方式有兩種:從GUI設計窗口的工具欄上選擇Align Objects命令按鈕;選擇Tools菜單下的Align Objects.菜單項,就可以打開對象位置調(diào)整器。利用對象屬性查看器,可以查看每個對象的屬性值,也可以修改、設置對象的屬性值。3. 用屬性查看器設置控件屬性 打開屬性查看器(Opening Property Inspector)對象屬性查看器的打開方式有四種:從GUI設計窗口工具欄上選擇Property
10、 Inspector命令按鈕;選擇View菜單下的Property Inspector菜單項;在控件對象上單擊鼠標右鍵,選擇彈出菜單的 Property Inspector菜單項。 在命令窗口中輸入inspect; 布置控件; 定義文本框的屬性; 定義坐標軸的屬性; 定義按鈕的屬性; 定義復選框。 使用屬性查看器(Using Property Inspector)利用菜單編輯器,可以創(chuàng)建、設置、修改下拉式菜單和快捷菜單。選擇 Tools 菜單下的 Menu Editor.子菜單,即可打開菜單編輯器。4. 菜單編輯器(Menu Editor)菜單也可以通過編程實現(xiàn),方法為從GUI設計窗口的工具欄
11、上選擇Menu Editor命令按鈕,打開菜單編輯程序。 菜單編輯器包括菜單的設計和編輯,菜單編輯器有八個快捷鍵,可以利用它們?nèi)我馓砑踊騽h除菜單,可以設置菜單項的屬性,包括名稱(Label)、標識(Tag)、選擇是否顯示分隔線(Separator above this item)、是否在菜單前加上選中標記(Item is checked)、調(diào)用函數(shù)(Callback)。 菜單編輯器左上角的第一個按鈕用于創(chuàng)建一級菜單項。第二個按鈕用于創(chuàng)建一級菜單的子菜單。 菜單編輯器的左下角有兩個按鈕,選擇第一個按鈕,可以創(chuàng)建下拉式菜單。選擇第二個按鈕,可以創(chuàng)建Context Menu菜單。選擇它后,菜單編輯器
12、左上角的第三個按鈕就會變成可用,單擊它就可以創(chuàng)建Context Menu主菜單。在選中已經(jīng)創(chuàng)建的Context Menu主菜單后,可以單擊第二個按鈕創(chuàng)建選中的Context Menu主菜單的子菜單。與下拉式菜單一樣,選中創(chuàng)建的某個Context Menu菜單,菜單編輯器的右邊就會顯示該菜單的有關屬性,可以在這里設置、修改菜單的屬性。 菜單編輯器左上角的第四個與第五個按鈕用于對選中的菜單進行左移與右移,第六與第七個按鈕用于對選中的菜單進行上移與下移,最右邊的按鈕用于刪除選中的菜單。5. 對象瀏覽器(Object Browsers) 利用對象瀏覽器,可以查看當前設計階段的各個句柄圖形對象。可以在對
13、象瀏覽器中選中一個或多個控件來打開該控件的屬性編輯器。對象瀏覽器的打開方式有:從GUI設計窗口的工具欄上選擇Object Browser命令按鈕;選擇View菜單下的Object Browser子菜單;在設計區(qū)域單擊鼠標右鍵,選擇彈出菜單的 Object Browser。. Tab順序編輯器(Tab Order Editor) 利用Tab順序編輯器(Tab Order Editor),可以設置用戶按鍵盤上的Tab鍵時,對象被選中的先后順序。Tab順序編輯器的打開方式為:選擇Tools菜單下的Tab Order Editor.菜單項,就可以打開Tab順序編輯器。從GUI設計窗口的工具欄上選擇Ta
14、b Order Editor.命令按鈕。1. GUI控件對象類型 控件對象是事件響應的圖形界面對象。當某一事件發(fā)生時,應用程序會做出響應并執(zhí)行某些預定的功能子程序(Callback).2. 控件對象的描述 Matlab中的控件大致可分為兩種,一種為動作控件,鼠標點擊這些控件時會產(chǎn)生相應的響應。一種為靜態(tài)控件,是一種不產(chǎn)生響應的控件,如文本框等。 二、控件對象及屬性 每種控件都有一些可以設置的參數(shù),用于表現(xiàn)控件的外形、功能及效果,既屬性。屬性由兩部分組成:屬性名和屬性值,它們必須是成對出現(xiàn)的。按鈕(Push Buttons):執(zhí)行某種預定的功能或操作;開關按鈕(Toggle Button):產(chǎn)生
15、一個動作并指示一個二進制狀態(tài)(開或關),當鼠點擊它時按鈕將下陷,并執(zhí)行callback(回調(diào)函數(shù))中指定的內(nèi)容,再次點擊,按鈕復原,并再次執(zhí)行callback 中的內(nèi)容;單選框(Radio Button):單個的單選框用來在兩種狀態(tài)之間切換,多個單選框組成一個單選框組時,用戶只能在一組狀態(tài)中選擇單一的狀態(tài),或稱為單選項;復選框(Check Boxes):單個的復選框用來在兩種狀態(tài)之間切換,多個復選框組成一個復選框組時,可使用戶在一組狀態(tài)中作組合式的選擇,或稱為多選項;文本編輯器(Editable Texts):用來使用鍵盤輸入字符串 的值,可以對編輯框中的內(nèi)容進行編輯、刪除和替換等操作;靜態(tài)文
16、本框(Static Texts):僅用于顯示單行的說明文字;滾動條(Slider): 可輸入指定范圍的數(shù)量值;邊框(Frames):在圖形窗口圈出一塊區(qū)域;列表框(List Boxes):在其中定義一系列可供選擇的字符串;彈出式菜單(Popup Menus): 讓用戶從一列菜單項中選擇一項作為參數(shù)輸入;此外還有坐標軸(Axes), 用于顯示圖形和圖象。 用戶可以在創(chuàng)建控件對象時,設定其屬性值,未指定時將使用系統(tǒng)缺省值。3. 控件對象的屬性(Attributes of controller object) 兩大類控件對象屬性:第一類是所有控件對象都具有的公共屬性,第二類是控件對象作為圖形對象所具
17、有的屬性。控件對象的公共屬性Children 取值為空矩陣,因為控件對象沒有自己的子對象;Tag取值為字符串,定義了控件的標識值,在任何程序中都可以通過這個標識值控制該控件對象;Type 取值為uicontrol,表明圖形對象的類型;Visible取值為on 或off。UserDate取值為空矩陣,用于保存與該控件對象相關的重要數(shù)據(jù)和信息;Parent取值為某個圖形窗口對象的句柄,該句柄表明了控件對象所在的圖形窗口;BackgroundColor取值為顏色的預定義字符或RGB數(shù)值;缺省值為淺灰色;Callback取值為字符串,可以是某個M文件名或一小段Matlab語句,當用戶激活某個控件對象時
18、,應用程序就運行該屬性定義的子程序;Enable取值為on(缺省值),inactive和off;Extend取值為四元素矢量0, 0, width, height,記錄控件對象標題字符的位置和尺寸;ForegroundColor取值為顏色的預定義字符或RGB數(shù)值,該屬性定義控件對象標題字符的顏色;缺省值為黑色;Max,Min取值都為數(shù)值,缺省值分別為1和0;String取值為字符串矩陣或塊數(shù)組,定義控件對象標題或選項內(nèi)容;Style取值可以是pushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu
19、或listbox;Units取值可以是pixels (缺省值), normalized(相對單位), inches, centimeters(厘米)或points(磅);Value取值可以是矢量,也可以是數(shù)值,其含義及解釋依賴于控件對象的類型。控件對象的基本控制屬性FontAngle取值為normal(正體,缺省值), italic(斜體), oblique(方頭);FontName取值為控件標題等字體的字庫名;FontSize取值為數(shù)值;FontUnits取值為points(缺省值), normalized, inches, centimeters或pixels;FontWeight取值為n
20、ormal(缺省值), light,demi和bold,定義字符的粗細;HorizontalAligment取值為left,center (缺省值) 或 right,定義控件對象標題等的對齊方式。控件對象的修飾控制屬性ListboxTop取值為數(shù)量值,用于listbox控件對象;SliderStop取值為兩元素矢量minstep,maxstep,用于slider控件對象;Selected取值為on 或off(缺省值) ;SlectionHoghlight取值為on 或off(缺省值) 。控件對象的輔助屬性BusyAction取值為cancel或queue(缺省值) ;ButtDownFun取值
21、為字符串,一般為某個M文件名或一小段Matlab程序;Creatfun 取值為字符串,一般為某個M文件名或一小段Matlab程序;DeletFun取值為字符串,一般為某個M文件名或一小段Matlab程序;HandleVisibility取值為on(缺省值), callback或off;Interruptible取值為on 或off(缺省值) 。Callback管理屬性4. 控件對象的建立 Matlab提供了用于建立控件對象的函數(shù)uicontrol,其調(diào)用格式為: 對象句柄=uicontrol(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,)其中各個屬性名及可取的值和后面將介紹的uime
22、nu函數(shù)相似,但也不盡相同。 在對話框上有各種各樣的控件,利用這些控件可以實現(xiàn)有關控制。例1 建立數(shù)制轉換對話框。在左邊輸入一個十進制整數(shù)和216之間的數(shù),單擊“轉換”按鈕能在右邊得到十進制數(shù)所對應的216進制字符串,單擊“退出”按鈕退出對話框。程序如下: hf=figure(Color,0,1,1,Position,100,200,400,200,. Name,數(shù)制轉換,NumberTitle,off,MenuBar,none); uicontrol(hf,Style,Text, Units,normalized,. Position,0.05,0.8,0.45,0.1,Horizontal
23、,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,norm
24、alized,Horizontal,center,. String,十進制數(shù),Back,1,1,0); uicontrol(hf,Style,Text,Position,0.05,0.4,0.25,0.1,. Units,normalized,Horizontal,center,. String,216進制,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,
25、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
26、,b);,set(ht,string,dec); uicontrol(hf,Style,Push,Position,0.18,0.1,0.2,0.12,. String,轉 換,Units,normalized,Call,COMM); 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ù)的作用是將任意十進制整數(shù)轉換為216進制字符串。trdec.m函數(shù)文件如下: function dec=trdec(n,b) ch1
27、=0123456789ABCDEF; %十六進制的16個符號 k=1; while n=0 %不斷除某進制基數(shù)取余直到商為0 p(k)=rem(n,b); n=fix(n/b); k=k+1; end k=k-1; strdec=; while k=1 %形成某進制數(shù)的字符串 kb=p(k); strdec=strcat(strdec,ch1(kb+1:kb+1); k=k-1; end dec=strdec;所建立的數(shù)制轉換對話框如下:例2 建立圖形演示對話框。在編輯框輸入繪圖命令,單擊“繪圖”按鈕能在左邊坐標軸得到所對應的圖形,彈出框提供色圖控制,列表框提供坐標網(wǎng)格線和坐標邊框控制。 程序
28、如下: 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
29、.63,0.15,0.2,0.68,. Max,2); %Max取2,使Max-Min1,從而允許多行輸入 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,Grid on|Grid off|Box on|Box off); hpush1=uicontrol(gc
30、f,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,關 閉,Call,close all); set(hpush1,Call,COMM(hedit,hpopup,hlist); set(hlist,Call,COMM(hedit,hpopup,hlist); set(hpopup,Call,COMM(hedit,hpopup,hlist); 程序調(diào)用了COMM.
31、m函數(shù)文件, 該函數(shù)文件如下:function COMM(hedit,hpopup,hlist) com=get(hedit,String); n1=get(hpopup,Value); n2=get(hlist,Value); if isempty(com) %編輯框輸入非空時 eval(com); %執(zhí)行從編輯框輸入的命令 chpop=spring,summer,autumn,winter; chlist=grid on,grid off,box on,box off; colormap(eval(chpopn1); eval(chlistn2); end所建立的圖形演示對話框如右圖所示:
32、三、菜單設計1. 建立用戶菜單Hm=uimenu(Hp,屬性名1,屬性值1,屬性名2,屬性值2,)功能:創(chuàng)建句柄值為Hm的自定義的用戶菜單。其中Hp為其父對象的句柄,屬性名和屬性值構成屬性二元對,定義用戶菜單的屬性。建立自定義的用戶菜單的函數(shù)為uimenu,格式為: 子菜單項句柄=uimenu(一級菜單項句柄,屬性名1,屬性值1,屬性名2,屬性值2,) 因其調(diào)用方法不同,該函數(shù)可以用于建立一級菜單項和子菜單項。建立一級菜單項的函數(shù)調(diào)用格式為:一級菜單項句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,)建立子菜單項的函數(shù)調(diào)用格式為:2 . 菜單對象常用屬性 菜單對象除具
33、有Children(子對象),Parent(父對象),Tag(標簽),Type(類型),UserData(用戶數(shù)據(jù)),Enable(使能)和 Visible(可見性)等公共屬性,還有一些常用的特殊屬性,如回調(diào)(callback)屬性和菜單名(label)。 另外,用戶菜單的外觀有四個屬性:Position(位置),Separator(分隔線),checked(檢錄符)和ForeGroundColor(前景顏色)。 Tag屬性 Tag屬性的取值是字符串,它定義了該菜單對象的一個標識值。定義了Tag屬性后,在任何程序中都可以通過這個標識值找出該菜單對象。Type屬性 Type屬性的取值總是uime
34、nu,這個屬性值標明圖形對象的類型。對菜單對象,其類型就是uimenu,用戶不能改寫這個屬性。例3 建立“圖形演示系統(tǒng)”菜單。菜單條中含有3個菜單項:Plot、Option和Quit。Plot中有Sine Wave和Cosine Wave兩個子菜單項,分別控制在本圖形窗口畫出正弦和余弦曲線。Option菜單項的內(nèi)容為:Grid on和Grid off控制給坐標軸加網(wǎng)格線,Box on和Box off控制給坐標軸加邊框,而且這4項只有在畫有曲線時才是可選的。Figure Color控制圖形窗口背景顏色。Quit控制是否退出系統(tǒng)。程序如下: UserData屬性 UserData屬性的取值是一個矩
35、陣,缺省值為空矩陣,用戶可以在這個屬性中保存與該菜單對象相關的重要數(shù)據(jù)或信息,借此可以達到傳遞數(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菜單項hplot=uimenu(gcf,Label,&Plot);uimenu(hplot,Label,Sine Wave,Call,t=-pi:p
36、i/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,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菜單項 hoption=uime
37、nu(gcf,Label,&Option); hgon=uimenu(hoption,Label,&Grig on,Call,grid on,Enable,off); hgoff=uimenu(hoption,Label,&Grig off,Call,grid off,Enable,off); hbon=uimenu(hoption,Label,&Box on,separator,on,Call,box on,Enable,off); hboff=uimenu(hoption,Label,&Box off,Call,box off,Enable,off); hfigcor=uimenu(hop
38、tion,Label,&Figure Color,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菜單項 uimenu(gcf,
39、Label,&Quit,Call,close(gcf);所建立的“圖形演示系統(tǒng)”菜單如下: 菜單條中含有File和Help兩個菜單項。如果選擇File中的New選項,則將顯示New Item字樣,如果選擇File中的Open選項,則將顯示出Open Item字樣。File中的Save菜單項初始時處于禁選狀態(tài),在選擇Help選項之后將此菜單項恢復成可選狀態(tài),如果選擇File中的Save選項,則將出現(xiàn)一個新的菜單(三級菜單),其中共有兩個子菜單項Text file和Graphics file,如果選擇第1項,則將變量k1和k2分別賦為0和1,然后調(diào)用file01.m文件來進行相應的處理(該文件需要
40、另行編寫),如果選擇第2項,則將變量k1和k2分別賦為1和0,然后調(diào)用file10.m文件來進行相應的處理(該文件也需要另行編寫)。如果選擇File中的Save As選項,則將顯示Save As Item字樣。如果選擇File中的Exit選項,則將關閉當前窗口。如果選擇Help中About 選項,則將顯示Help Item字樣,并將Save菜單設置成可選狀態(tài)。例4 建立一個菜單系統(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,. Na
41、me,菜單設計示例一,NumberTitle,off,MenuBar,none); hfile=uimenu(hf,label,&File); hhelp=uimenu(hf,label,&Help); uimenu(hfile,label,&New,call,disp(New Item); uimenu(hfile,label,&Open,call,disp(Open Item); hsave=uimenu(hfile,label,&Save,Enable,off); uimenu(hsave,label,Text file,call,k1=0;k2=1;file01;); uimenu(h
42、save,label,Graphics file,call,k1=1;k2=0;file10;); uimenu(hfile,label,Save &As,call,disp(Save As Item); uimenu(hfile,label,&Exit,separator,on,call,close(hf); uimenu(hhelp,label,About .,call,. disp(Help Item);,set(hsave,Enable,on);所建立的菜單系統(tǒng)如下:3. 快捷菜單利用set函數(shù)將該快捷菜單和某圖形對象聯(lián)系起來。 快捷菜單是用鼠標右鍵單擊某對象時在屏幕上彈出的菜單。這種
43、菜單出現(xiàn)的位置是不固定的,而且總是和某個圖形對象相聯(lián)系。 在Matlab中,可以使用uicontextmenu函數(shù)和圖形對象的UIContextMenu屬性來建立快捷菜單,具體步驟為:利用uicontextmenu函數(shù)建立快捷菜單,格式為: 利用uimenu函數(shù)為快捷菜單建立菜單項,格式為: 功能:為創(chuàng)建的快捷菜單賦值,其中屬性名和屬性值構成屬性二元對。 uimenu(快捷菜單名,屬性名,屬性值,.)功能:建立快捷菜單,并將句柄值賦給變量hc。 hc=uicontextmenux=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);hl=plot(x,y);h
44、c=uicontextmenu; %建立快捷菜單hls=uimenu(hc,Label,線型); %建立菜單項hlw=uimenu(hc,Label,線寬);uimenu(hls,Label,虛線,Call,set(hl,LineStyle,:););uimenu(hls,Label,實線,Call,set(hl,LineStyle,-););uimenu(hlw,Label,加寬,Call,set(hl,LineWidth,2););uimenu(hlw,Label,變細,Call,set(hl,LineWidth,0.5););set(hl,UIContextMenu,hc); %將該快捷
45、菜單和曲線對象聯(lián)系起來例5 繪制曲線 y=2e-0.5xsin(2x),并建立一個與之相聯(lián)系的快捷菜單,用以控制曲線的線型和曲線寬度。程序如下:四、對話框設計1. 公共對話框 在圖形用戶界面程序設計中,對話框是重要的信息顯示和獲取輸入數(shù)據(jù)的用戶界面對象。使用對話框,可以使應用程序的界面更加友好,使用更加方便。Matlab 提供了兩類對話框,一類為 Windows 的公共對話框,另一類為Matlab 風格的專用對話框。 公共對話框是利用windows資源的對話框,包括文件打開、文件保存、顏色設置、字體設置、打印設置、打印預覽、打印等。文件打開對話框uigetfile:彈出文件打開對話框,列出當前
46、目錄下的所有Matlab文件;uigetfile(FilterSpec):彈出文件打開對話框,列出當前目錄下的所有由FilterSpec 指定類型的文件;uigetfile(FilterSpec,DialogTitle):同時設置文件打開對話框的標題為DialogTitle;uigetfile(FilterSpec,DialogTitle,x,y):x,y參數(shù)用于確定文件打開對話框的位置;fname,pname=uigetfile():返回打開文件的文件名和路徑。用于打開文件,函數(shù)為 uigetfile,其調(diào)用格式為:文件保存對話框用于保存文件,函數(shù)為uiputfile,其調(diào)用格式為:uipu
47、tfile:彈出文件保存對話框,列出當前目錄下的所有Matlab文件;uiputfile(InitFile):彈出文件保存對話框,列出當前目錄下的所有由InitFile指定類型的文件;uiputfile(InitFile,DialogTitle):同時設置文件保存對話框的標題為DialogTitle;uiputfile(InitFile,DialogTitle,x,y):x,y參數(shù)用于確定文件保存對話框的位置;fname,pname=uiputfile():返回保存文件的文件名和路徑。顏色設置對話框 用于圖形對象顏色的交互式設置,函數(shù)為 uisetcolor,其調(diào)用格式為: c=uisetco
48、lor(h_or_c,DialogTitle)輸入?yún)?shù) h_or_c 可以是一個圖形對象的句柄,也可以是一個三色 RGB 矢量, DialogTitle為顏色設置對話框的標題。字體設置對話框用于字體屬性的交互式設置,函數(shù)為uisetfont,格式為:uisetfont:打開字體設置對話框,返回所選擇字體的屬性;uisetfont(h):h 為圖形對象句柄,使用字體設置對話框重新設置該對象的字體屬性;uisetfont(S):S為字體屬性結構變量,S中包含的屬性有FontName、FontUnits、FontSize、FontWeight、FontAngle,返回重新設置的屬性值;uisetfo
49、nt(h,DialogTitle): h 為圖形對象句柄,使用字體設置對話框重新設置該對象的字體屬性,DialogTitle設置對話框的標題; uisetfont(S,DialogTitle): S為字體屬性結構變量,S中包含的屬性有FontName、FontUnits、FontSize、FontWeight、FontAngle,返回重新設置的屬性值, DialogTitle 設置對話框的標題;S=uisetfont():返回字體屬性值,保存在結構變量S中。打印設置對話框用于打印頁面的交互式設置,有兩個函數(shù):pagesetupdlg 和 pagedlg(老版本,Matlab6中仍可用)。調(diào)用格
50、式為:dlg=pagesetupdlg(fig):fig為圖形窗口的句柄,省略時為當前圖形窗口;pagedlg:設置當前圖形窗口;pagedlg(fig):設置以fig為句柄的圖形窗口。打印預覽對話框用于對打印頁面進行預覽,函數(shù)為printpreview ,格式為:printpreview:對當前圖形窗口進行打印預覽;printpreview(f):對以f為句柄的圖形窗口進行打印預覽。如右圖所示,打印預覽對話框上有5個按鈕。打印對話框printdlg:對當前圖形窗口打開Windows打印對話框;printdlg(fig):對以fig為句柄的圖形窗口打開Windows打印對話框;printdlg
51、(-crossplatform,fig):打開crossplatform 模式的Matlab打印對話框;printdlg(-setup,fig):在打印設置模式下,強制打開打印對話框。為Windows的標準對話框,函數(shù)為 printdlg ,格式為:2. Matlab專用對話框 Matlab除了使用公共對話框外,還提供了一些專用對話框,包括幫助、錯誤信息、信息提示、警告信息等。errordlg:打開默認的錯誤信息對話框;errordlg(errorstring):打開顯示errorstring信息的錯誤信息對話框;errordlg(errorstring,dlgname):打開顯示errors
52、tring信息的錯誤信息對話框,對話框的標題由dlgname指定;erordlg(errorstring,dlgname,on):打開顯示errorstring信息的錯誤信息對話框,對話框的標題由dlgname指定。如果對話框已存在,on參數(shù)將對話框顯示在最前端;h=errodlg():返回對話框句柄。錯誤信息對話框用于提示錯誤信息,函數(shù)為errordlg ,其調(diào)用格式為:幫助對話框用于幫助提示信息,函數(shù)為helpdlg ,其調(diào)用格式為:helpdlg:打開默認的幫助對話框;helpdlg(helpstring):打開顯示errorstring信息的幫助對話框;helpdlg(helpstri
53、ng,dlgname):打開顯示errorstring 信息的幫助對話框, 對話框的標題由dlgname指定;h=helpdlg():返回對話框句柄。例7 helpdlg(矩陣尺寸必須相等,在線幫助)例6 errordlg(輸入錯誤,請重新輸入,錯誤信息)輸入對話框answer=inputdlg(prompt):打開輸入對話框,prompt為單元數(shù)組,用于定義輸入數(shù)據(jù)窗口的個數(shù)和顯示提示信息,answer為用于存儲輸入數(shù)據(jù)的單元數(shù)組;answer=inputdlg(prompt,title):與上者相同,title確定對話框的標題;answer=inputdlg(prompt,title,li
54、neNo):參數(shù)lineNo可以是標量、列矢量或m2階矩陣,若為標量,表示每個輸入窗口的行數(shù)均為lineNo;若為列矢量,則每個輸入窗口的行數(shù)由列矢量lineNo的每個元素確定;若為矩陣,每個元素對應一個輸入窗口,每行的第一列為輸入窗口的行數(shù),第二列為輸入窗口的寬度;answer=inputdlg(prompt,title,lineNo,defAns):參數(shù)defans為一個單元數(shù)組,存儲每個輸入數(shù)據(jù)的默認值,元素個數(shù)必須與prompt 所定義的輸入窗口數(shù)相同,所有元素必須是字符串;answer=inputdlg(prompt,title,lineNo,defAns,Resize):參數(shù)res
55、ize決定輸入對話框的大小能否被調(diào)整,可選值為on或off.用于輸入信息,函數(shù)為inputdlg ,其調(diào)用格式為:列表選擇對話框prompt=Input Name,Input Age;title=Input Name and Age;lines=2 1;def=John Smith,35;answer=inputdlg(prompt,title,lines,def); 用于在多個選項中選擇需要的值,函數(shù)為listdlg,其調(diào)用格式為: selection,ok=listdlg(Liststring,S,)例8 創(chuàng)建兩個輸入窗口的輸入對話框。輸出參數(shù)selection為一個矢量,存儲所選擇的列表
56、項的索引號,輸入?yún)?shù)為可選項Liststring(字符單元數(shù)組), SelectionMode(single或multiple(缺省值), ListSize(wight,height), Name (對話框標題)等。信息提示對話框用于顯示提示信息,函數(shù)為msgbox ,其調(diào)用格式為:msgbox(message):打開信息提示對話框,顯示message信息;msgbox(message,title):title確定對話框標題;msgbox(message,title,icon): icon用于顯示圖標,可選圖標包括:none(無圖標,缺省值)、error、help、warn或custom(用戶
57、定義);msgbox(message,title,custom,icondata,iconcmap):當使用用戶定義圖標時,iconData為定義圖標的圖像數(shù)據(jù),iconCmap為圖像的色彩圖;msgbox(,creatmode):選擇模式creatMode,選項為:modal, non-modal 和replace;h=msgbox():返回對話框句柄。問題提示對話框用于回答問題的多種選擇,函數(shù)為questdlg,格式為:button=questdlg(qstring):打開問題提示對話框,有三個按鈕,分別為:Yes,No和Cancel,questdlg確定提示信息;button=quest
58、dlg(qstring,title): title確定對話框標題;button=questdlg(qstringtitle,default):當按回車鍵時,返回default的值,default 必須是Yes,No或Cancel 之一;button=questdlg(qstring,title,str1,str2,default):打開問題提示對話框,有兩個按鈕,分別由str1和str2確定,qstdlg確定提示信息, title確定對話框標題,default必須是str1或str2之一;button=questdlg(qstring, title,str1,str2,str3,default
59、): 打開問題提示對話框,有三個按鈕,分別由str1, str2和str3確定,qstdlg確定提示信息, title確定對話框標題,default必須是str1, str2或str3之一。 進程條 以圖形方式顯示運算或處理的進程,函數(shù)為waitbar,其調(diào)用格式為:h=waitbar(x,title):顯示以title為標題的進程條,x為進程條的比例長度,其值必須在0到1之間,h為返回的進程條對象的句柄;waitbar(x,title,creatcancelbtn,button_callback):在進程條上使用CreatCancelBtn參數(shù)創(chuàng)建一個撤銷按鈕,在進程中按下撤銷按鈕將調(diào)用bu
60、tton_callback函數(shù);waitbar(,property_name,property_value,):選擇其它由prompt_name定義的參數(shù),參數(shù)值由prompt_value指定。警告信息對話框用于提示警告信息,函數(shù)為warndlg,其調(diào)用格式為: h=warndlg(warningstring,dlgname) 打開警告信息對話框,顯示warningstring信息,dlgname確定對話框標題,h為返回的對話框句柄。h=waitbar(0,pleas wait.);for i=1:10000 waitbar(i/10000,h)end close(h)例9 創(chuàng)建并使用進程條。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 橋隧工中級練習題及答案(附解析)
- 2024年工業(yè)廢水中級模擬考試題(附答案解析)
- 2023年6月美容師初級練習題與答案(附解析)
- 稀土金屬壓延加工的殘余應力分析考核試卷
- 節(jié)能技術項目在鋼鐵行業(yè)的節(jié)能減排措施考核試卷
- 電池制造中的工業(yè)應用與能源儲存技術考核試卷
- 2025年其他未列明電子設備項目合作計劃書
- 2025年熱固化油墨項目發(fā)展計劃
- 經(jīng)濟型酒店業(yè)客戶體驗優(yōu)化考核試卷
- 聚苯并噁唑改性纖維制備考核試卷
- (高清版)JTGT 3650-01-2022 公路橋梁施工監(jiān)控技術規(guī)程
- 中國歷史地理智慧樹知到期末考試答案章節(jié)答案2024年北京大學
- MOOC 跨文化交際通識通論-揚州大學 中國大學慕課答案
- 華中科技大學碩士學位論文答辯評審表(自然科學類)
- 六年級下冊英語素材全冊單詞表 牛津上海版
- 費森4008s常見故障排除
- 積極心態(tài)與消極心態(tài)
- 《土地寶懺》2019版定稿
- 越王勾踐劍PPT課件
- 防溺水大家訪記錄表
- 人教版八年級下英語單詞默寫表格(整理打印)
評論
0/150
提交評論