MATLAB圖形用戶界面設(shè)計(jì)_第1頁
MATLAB圖形用戶界面設(shè)計(jì)_第2頁
MATLAB圖形用戶界面設(shè)計(jì)_第3頁
MATLAB圖形用戶界面設(shè)計(jì)_第4頁
MATLAB圖形用戶界面設(shè)計(jì)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、MATLAB程序語言設(shè)計(jì)7.1 MATLAB 圖形界面編程基礎(chǔ)7.2 MATLAB 標(biāo)準(zhǔn)對(duì)話框7.3 MATLAB 圖形界面設(shè)計(jì)基本控件7.4 MATLAB 界面菜單系統(tǒng)設(shè)計(jì)7.5 可視界面開發(fā)工具 GUIDE 介紹7.6 程序設(shè)計(jì)舉例與習(xí)題第七講 MATLAB圖形用戶界面設(shè)計(jì)MATLAB 語言提供了面向?qū)ο蟮膱D形界面設(shè)計(jì)方法。對(duì)象之間的關(guān)系如下圖所示。7.1 MATLAB 圖形界面編程基礎(chǔ)窗口對(duì)象 figure7.1 MATLAB 圖形界面編程基礎(chǔ)每一個(gè)窗口對(duì)象 figure 下可以有4種對(duì)象,即菜單 uimenu 對(duì)象、控件 uicontrol 對(duì)象、坐標(biāo)軸 axes 對(duì)象和右鍵快捷菜單

2、uicontextmenu 對(duì)象。h=figure; 返回窗口句柄 hfigure(h); 將窗口 h 設(shè)為當(dāng)前窗口gcf; 返回當(dāng)前窗口句柄 hget(h); 查看當(dāng)前窗口的屬性及其取值set(h); 查看窗口的所有屬性及可能取值窗口對(duì)象 figure7.1 MATLAB 圖形界面編程基礎(chǔ)窗口屬性可以由下面命令設(shè)置或修改 set(h,PropertyName1,PropertyVal1,PropertyName2,PropertyVal2,.),也可以用圖形界面的形式設(shè)置首先用下述命令畫出一波形t=0:0.1:2*pi;y=sin(t);plot(t,y)再選擇圖形窗口下 EditFigur

3、e Property 菜單將彈出窗口屬性對(duì)話框,并可以看到對(duì)象的層次關(guān)系以及可以編輯所選擇的任何對(duì)象的屬性。注意不是所有屬性都可以在圖形界面上設(shè)置,但都可以用 set 命令來進(jìn)行設(shè)置。窗口對(duì)象 figure 的各種回調(diào)函數(shù)7.1 MATLAB 圖形界面編程基礎(chǔ)CloseRequestFcn關(guān)閉窗口時(shí)的響應(yīng)函數(shù)CreateFcn窗口建立時(shí)的響應(yīng)函數(shù)DeleteFcn窗口對(duì)象刪除時(shí)的響應(yīng)函數(shù)KeyPressFcn鍵盤鍵按下時(shí)的響應(yīng)函數(shù)WindowButtonDownFcn鼠標(biāo)按鍵按下時(shí)的響應(yīng)函數(shù)WindowButtonMotionFcn鼠標(biāo)按鍵移動(dòng)時(shí)的響應(yīng)函數(shù)WindowButtonUpFcn鼠標(biāo)

4、按鍵釋放時(shí)的響應(yīng)函數(shù)回調(diào)函數(shù) callback 是指該對(duì)象指定的事件發(fā)生時(shí)調(diào)用的函數(shù),窗口對(duì)象的回調(diào)函數(shù)主要有以下一些。7.1 MATLAB 圖形界面編程基礎(chǔ)根對(duì)象屬性詳細(xì)的資料見 Root Property幫助文檔窗口對(duì)象屬性詳細(xì)的資料見 figure 函數(shù)的幫助文檔坐標(biāo)軸對(duì)象屬性詳細(xì)的資料見 axes 函數(shù)的幫助文檔菜單對(duì)象屬性詳細(xì)的資料見 uimen 函數(shù)的幫助文檔控件對(duì)象屬性詳細(xì)的資料見 uicontrol 函數(shù)的幫助文檔右鍵菜單對(duì)象見 uicontextmenu 函數(shù)的幫助文檔線對(duì)象屬性詳細(xì)的資料見 line 函數(shù)的幫助文檔文字對(duì)象屬性詳細(xì)的資料見 text 函數(shù)的幫助文檔表面圖對(duì)象

5、屬性詳細(xì)的資料見 surface 函數(shù)的幫助文檔圖像對(duì)象屬性詳細(xì)的資料見 image 函數(shù)的幫助文檔光源對(duì)象屬性詳細(xì)的資料見 light 函數(shù)的幫助文檔三維塊對(duì)象屬性詳細(xì)的資料見 patch 函數(shù)的幫助文檔矩形對(duì)象屬性詳細(xì)的資料見 rectangle 函數(shù)的幫助文檔7.2 MATLAB 標(biāo)準(zhǔn)對(duì)話框文件對(duì)話框 fname, pname=uigetfile(ffilter, strTitle, x, y) fname, pname=uigetfile(*.m;*.txt;*.c, Please select a file name)fname =diff.mpname =F:MATLAB6p1wo

6、rkpolynom7.2 MATLAB 標(biāo)準(zhǔn)對(duì)話框文件寫對(duì)話框 fname, pname=uiputfile(ffilter, strTitle, x, y)filename, pathname = uiputfile(*.m;*.mdl;*.mat, Save As)7.2 MATLAB 標(biāo)準(zhǔn)對(duì)話框顏色設(shè)置對(duì)話框 c=uisetcolor; 或 c=uisetcolor(c0); uisetcolorans = 0.5020 1.0000 07.2 MATLAB 標(biāo)準(zhǔn)對(duì)話框字體設(shè)置對(duì)話框 h=uisetfont(h_Text, strTitle) 其中 h_Text 為要改變的字符句柄,st

7、rTitle為對(duì)話框標(biāo)題 uisetfontans = FontName: Arial FontUnits: points FontSize: 10 FontWeight: normal FontAngle: normal7.2 MATLAB 標(biāo)準(zhǔn)對(duì)話框警告、錯(cuò)誤與提示信息對(duì)話框warndlg(), errordlg(), helpdlg() h=warndlg(ERROR: There is.encountered, Try again, Warning)h = 331.0017 h=errordlg(ERROR: There is.encountered, Program Aborted,

8、 Error)h = 331.0020 h=helpdlg(HELP: Refer to the manual, Have a nice day, Message Box Dialog)h = 331.0022MATLAB 語言的控件可以由 uicontrol 函數(shù)設(shè)置,該函數(shù)的調(diào)用格式為7.3 MATLAB 圖形界面設(shè)計(jì)基本控件h = uicontrol( PropertyName1, PropertyValue1, PropertyName2, PropertyValue2, )控件的屬性及其取值見 uicontrol 函數(shù)的幫助文檔,各種不同的控件由屬性 Style 的值來控制,該屬性取

9、值有:pushbutton, togglebutton, radiobutton, checkbox, edit, text, slider,frame, listbox, popupmenu控件的其他重要的屬性見下表7.3 MATLAB 圖形界面設(shè)計(jì)基本控件屬性名含義取值情況CData真彩色位圖,該位圖標(biāo)注在控件上一個(gè)矩陣String控件標(biāo)簽,或listbox 或 popupmenu的項(xiàng)字符串Enable使能控制on, off, inactiveStyle風(fēng)格,含義如前所示見前頁Valuelistbox或 popupmenu取值情況Callback響應(yīng)控件的回調(diào)函數(shù)字符串,表示MATLAB函

10、數(shù)或命令控件使用例子7.3 MATLAB 圖形界面設(shè)計(jì)基本控件h = uicontrol(Style, pushbutton, String, Clear,. Position, 20 150 100 70, Callback, cla);該例子創(chuàng)建一按紐,按下時(shí)清除當(dāng)前坐標(biāo)軸hpop = uicontrol(Style, listbox,. String, hsv|hot|cool|gray,. Position, 20 320 100 50,. Callback, setmap);val = get(hpop,Value);if val = 1 colormap(hsv)elseif va

11、l = 2 colormap(hot)elseif val = 3 colormap(cool)elseif val = 4 colormap(gray)end下例創(chuàng)建彈出菜單,根據(jù)選擇不同項(xiàng)目執(zhí)行不同操作,回調(diào)函數(shù) setmap.m見右所示。MATLAB 允許用戶設(shè)計(jì)出自己所需要的菜單系統(tǒng),菜單的設(shè)置是由 uimen 函數(shù)來完成的,其調(diào)用格式為7.4 MALTAB 界面菜單系統(tǒng)設(shè)計(jì)h =uimenu( Figurehandle, PropertyName1, value1, PropertyName2, value2,.) 如果用戶想在某一個(gè)菜單條下定義一個(gè)新的子菜單條,則可以使用下面給出的

12、命令格式h =uimenu( parent_menu_handle, PropertyName1, value1, PropertyName2, value2,.) 菜單對(duì)象的屬性也有許多,最重要的有以下兩個(gè)7.4 MALTAB 界面菜單系統(tǒng)設(shè)計(jì)菜單條的提示名稱 Label:它可以是一個(gè)任意字符串。在菜單項(xiàng)提示的字符串中允許用戶使用 標(biāo)志,以表示該符號(hào)后面的字符在顯示時(shí)有一個(gè)下劃線修飾,這使得用戶可以用鍵盤鍵容易地激活相應(yīng)的菜單項(xiàng)?;卣{(diào)函數(shù) Callback:它可以為一個(gè)函數(shù)名稱,也可以是一組 MATLAB 命令。在該菜單被選中以后, MATLAB將自動(dòng)地調(diào)用此回調(diào)函數(shù)來作出對(duì)相應(yīng)菜單項(xiàng)的響應(yīng)

13、,如果沒有設(shè)置一個(gè)合適的回調(diào)函數(shù),則此菜單項(xiàng)也將失去其應(yīng)有的意義。菜單例子7.4 MALTAB 界面菜單系統(tǒng)設(shè)計(jì)hf=figure(Name, Menu Test Window, NumberTitle, off, MenuBar, none);hmfile=uimenu(hf, label, &File);hmhelp=uimenu(hf, label, &Help);uimenu(hmfile, label, &New, callback, disp(New Item Selected);uimenu(hmfile, label, &Open, callback, disp(Open It

14、em Selected);hmsav=uimenu(hmfile, label, &Demo, Enable, off);uimenu(hmsav, label, Filter Demo, callback, filtdem2;);uimenu(hmsav, label, Filtering Demo, callback, filtdem;);uimenu(hmfile, label, Save &As, callback, key=4; filesys;);uimenu(hmfile, label, &Exit,separator,on, callback, close(hf);uimenu

15、(hmhelp, label, About., callback, disp(myhelp); set(hmsav, Enable,on);右鍵菜單用命令 uicontextmenu 創(chuàng)建,見下面例子7.4 MALTAB 界面菜單系統(tǒng)設(shè)計(jì)% 創(chuàng)建右鍵快捷菜單cmenu = uicontextmenu;% 畫出圖形曲線并與右鍵菜單發(fā)生聯(lián)系hline = plot(1:10, UIContextMenu, cmenu);%定義右鍵菜單項(xiàng)的 Callback 函數(shù)cb1 = set(hline, LineStyle, -);cb2 = set(hline, LineStyle, :);cb3 = s

16、et(hline, LineStyle, -);%定義右鍵菜單項(xiàng)item1 = uimenu(cmenu, Label, dashed, Callback, cb1);item2 = uimenu(cmenu, Label, dotted, Callback, cb2);item3 = uimenu(cmenu, Label, solid, Callback, cb3);MATLAB 提供了一個(gè)可視的圖形界面開發(fā)程序 GUIDE。它的含義是 GUI Design Environment。在MATLAB命令窗中鍵入命令 guide 將得到如圖所示界面。7.5 可視界面開發(fā)工具 GUIDE 介紹開

17、發(fā)含GUI界面的程序包含兩個(gè)步驟7.5 可視界面開發(fā)工具 GUIDE 介紹設(shè)計(jì) GUI 界面及其各個(gè)控件布局為各個(gè) GUI 界面控件編程 Callback 函數(shù)從原理上來說,任何含GUI界面的程序都可以用M文件編輯器 Editor來實(shí)現(xiàn),但顯然用 GUIDE 工具設(shè)計(jì)界面要方便得多。GUIDE設(shè)計(jì)將得到兩個(gè)文件,他們是FIG文件:包含界面布局設(shè)計(jì)及各個(gè)圖形對(duì)象屬性取值M文件:調(diào)出界面的主程序及各個(gè)回調(diào)子程序,一般稱為M應(yīng)用文件。應(yīng)用 GUIDE 進(jìn)行設(shè)計(jì)時(shí),先要設(shè)置好GUIDE應(yīng)用選項(xiàng),選擇菜單 ToolsApplication Options,將彈出如下對(duì)話框。7.5 可視界面開發(fā)工具 GU

18、IDE 介紹各個(gè)選項(xiàng)含義很容易明白,在此不再多說。一般來說,在MATLAB命令窗執(zhí)行的繪圖函數(shù)將在當(dāng)前圖形窗口繪圖,但一般GUI窗口不希望這樣操作,這可由選項(xiàng)Command-Line Accessibility 來控制,它的含義如下。7.5 可視界面開發(fā)工具 GUIDE 介紹CallbackGUI窗口和坐標(biāo)軸只能被Callback函數(shù)使用,這是缺省值OffMATLAB命令行命令不能控制GUI界面OnMATLAB命令行命令可以控制GUI界面User-specified根據(jù)窗口的HandleVisibility 和IntegerHandle 屬性值由用戶決定當(dāng)你選擇 Generate callba

19、ck function prototypes時(shí), GUIDE為每個(gè)有 Callback 函數(shù)的控件產(chǎn)生 Callback 原型函數(shù)。Callback 原型函數(shù)語法及參數(shù)如下7.5 可視界面開發(fā)工具 GUIDE 介紹function varargout = objectTag_Callback(h,eventdata,handles,varargin)hCallback 函數(shù)附屬的對(duì)象的句柄eventdata保留handles對(duì)象句柄varagin傳遞給 Callback 函數(shù)的參數(shù)列表GUI圖形界面對(duì)象的屬性可以用 Property Inspector 來查看與修改。7.5 可視界面開發(fā)工具

20、GUIDE 介紹可以用 Object Browser 查看圖形對(duì)象的層次圖7.5 可視界面開發(fā)工具 GUIDE 介紹下面介紹各個(gè)圖形對(duì)象的Callback編程7.5 可視界面開發(fā)工具 GUIDE 介紹Toggle Button 的 Callback 編程function varargout = togglebutton1_Callback(h,eventdata,handles,varargin)button_state = get(h,Value);if button_state = get(h,Max) % toggle button is pressedelseif button_sta

21、te = get(h,Min) % toggle button is not pressedend為按紐加圖像a(:,:,1) = rand(16,128);a(:,:,2) = rand(16,128);a(:,:,3) = rand(16,128);set(h,CData,a)7.5 可視界面開發(fā)工具 GUIDE 介紹Radio Button 的編程Radio Button 選還是沒有被選由 Value 屬性值來確定Value = Max, 被選.Value = Min, 沒有被選為了使得一組 Radio Button 中只有一個(gè)被選,要求用戶編程設(shè)置其他的 Radio Button 的

22、Value值為零,被選中的那個(gè) Radio Button 系統(tǒng)設(shè)為 1。function varargout = radiobutton1_Callback(h,eventdata,handles,varargin)off = handles.radiobutton2,handles.radiobutton3,handles.radiobutton4; set(off,Value,0)7.5 可視界面開發(fā)工具 GUIDE 介紹Check Box 的編程Radio Button 選還是沒有被選由 Value 屬性值來確定Value = Max, 被選.Value = Min, 沒有被選Check

23、 Box 的 Callback 編程如下。function checkbox1_Callback(h,eventdata,handles,varargin)if (get(h,Value) = get(h,Max) % then checkbox is checked-take approriate actionelse % checkbox is not checked-take approriate actionend7.5 可視界面開發(fā)工具 GUIDE 介紹Edit Text 的編程從 Edit Text 中取數(shù)值function edittext1_Callback(h,eventda

24、ta,handles,varargin)user_string = get(h,string);% proceed with callback.function edittext1_Callback(h,eventdata,handles,varargin)user_entry = str2double(get(h,string);if isnan(user_entry) errordlg(You must enter a numeric value,Bad Input,modal)end% proceed with callback.7.5 可視界面開發(fā)工具 GUIDE 介紹List Box

25、 的編程,從 List Box 中獲得所選的項(xiàng)目(本例有2個(gè)項(xiàng)目被選中)function var1,var2 = get_var_names(handles)% Returns the names of the two variables to plotlist_entries = get(handles.listbox1,String);index_selected = get(handles.listbox1,Value);if length(index_selected) = 2errordlg(You must select two variables,Incorrect Select

26、ion,modal)elsevar1 = list_entriesindex_selected(1);var2 = list_entriesindex_selected(2);end 7.5 可視界面開發(fā)工具 GUIDE 介紹Popup Menu 的編程function varargout = popupmenu1_Callback(h,eventdata,handles,varargin)val = get(h,Value);switch valcase 1 % The user selected the first itemcase 2 % The user selected the se

27、cond item% etc.function varargout = popupmenu1_Callback(h,eventdata,handles,varargin)val = get(h,Value);string_list = get(h,String);selected_string = string_listval; % convert from cell array to string% etc.例子:設(shè)計(jì)如下圖所示界面7.6 程序設(shè)計(jì)舉例與習(xí)題第一步:設(shè)計(jì)界面布局7.6 程序設(shè)計(jì)舉例與習(xí)題第二步:設(shè)置各個(gè)對(duì)象的屬性7.6 程序設(shè)計(jì)舉例與習(xí)題三個(gè) Edit Box 的 String 屬性分別設(shè)為 50,120,0:0.001:0.25,作為f1, f2, t的初始

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論