




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、MATLAB程序語言設計7.1 MATLAB 圖形界面編程基礎7.2 MATLAB 標準對話框7.3 MATLAB 圖形界面設計基本控件7.4 MATLAB 界面菜單系統(tǒng)設計7.5 可視界面開發(fā)工具 GUIDE 介紹7.6 程序設計舉例與習題第七講 MATLAB圖形用戶界面設計MATLAB 語言提供了面向對象的圖形界面設計方法。對象之間的關系如下圖所示。7.1 MATLAB 圖形界面編程基礎窗口對象 figure7.1 MATLAB 圖形界面編程基礎每一個窗口對象 figure 下可以有4種對象,即菜單 uimenu 對象、控件 uicontrol 對象、坐標軸 axes 對象和右鍵快捷菜單
2、uicontextmenu 對象。h=figure; 返回窗口句柄 hfigure(h); 將窗口 h 設為當前窗口gcf; 返回當前窗口句柄 hget(h); 查看當前窗口的屬性及其取值set(h); 查看窗口的所有屬性及可能取值窗口對象 figure7.1 MATLAB 圖形界面編程基礎窗口屬性可以由下面命令設置或修改 set(h,PropertyName1,PropertyVal1,PropertyName2,PropertyVal2,.),也可以用圖形界面的形式設置首先用下述命令畫出一波形t=0:0.1:2*pi;y=sin(t);plot(t,y)再選擇圖形窗口下 EditFigur
3、e Property 菜單將彈出窗口屬性對話框,并可以看到對象的層次關系以及可以編輯所選擇的任何對象的屬性。注意不是所有屬性都可以在圖形界面上設置,但都可以用 set 命令來進行設置。窗口對象 figure 的各種回調(diào)函數(shù)7.1 MATLAB 圖形界面編程基礎CloseRequestFcn關閉窗口時的響應函數(shù)CreateFcn窗口建立時的響應函數(shù)DeleteFcn窗口對象刪除時的響應函數(shù)KeyPressFcn鍵盤鍵按下時的響應函數(shù)WindowButtonDownFcn鼠標按鍵按下時的響應函數(shù)WindowButtonMotionFcn鼠標按鍵移動時的響應函數(shù)WindowButtonUpFcn鼠標
4、按鍵釋放時的響應函數(shù)回調(diào)函數(shù) callback 是指該對象指定的事件發(fā)生時調(diào)用的函數(shù),窗口對象的回調(diào)函數(shù)主要有以下一些。7.1 MATLAB 圖形界面編程基礎根對象屬性詳細的資料見 Root Property幫助文檔窗口對象屬性詳細的資料見 figure 函數(shù)的幫助文檔坐標軸對象屬性詳細的資料見 axes 函數(shù)的幫助文檔菜單對象屬性詳細的資料見 uimen 函數(shù)的幫助文檔控件對象屬性詳細的資料見 uicontrol 函數(shù)的幫助文檔右鍵菜單對象見 uicontextmenu 函數(shù)的幫助文檔線對象屬性詳細的資料見 line 函數(shù)的幫助文檔文字對象屬性詳細的資料見 text 函數(shù)的幫助文檔表面圖對象
5、屬性詳細的資料見 surface 函數(shù)的幫助文檔圖像對象屬性詳細的資料見 image 函數(shù)的幫助文檔光源對象屬性詳細的資料見 light 函數(shù)的幫助文檔三維塊對象屬性詳細的資料見 patch 函數(shù)的幫助文檔矩形對象屬性詳細的資料見 rectangle 函數(shù)的幫助文檔7.2 MATLAB 標準對話框文件對話框 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 標準對話框文件寫對話框 fname, pname=uiputfile(ffilter, strTitle, x, y)filename, pathname = uiputfile(*.m;*.mdl;*.mat, Save As)7.2 MATLAB 標準對話框顏色設置對話框 c=uisetcolor; 或 c=uisetcolor(c0); uisetcolorans = 0.5020 1.0000 07.2 MATLAB 標準對話框字體設置對話框 h=uisetfont(h_Text, strTitle) 其中 h_Text 為要改變的字符句柄,st
7、rTitle為對話框標題 uisetfontans = FontName: Arial FontUnits: points FontSize: 10 FontWeight: normal FontAngle: normal7.2 MATLAB 標準對話框警告、錯誤與提示信息對話框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ù)的調(diào)用格式為7.3 MATLAB 圖形界面設計基本控件h = uicontrol( PropertyName1, PropertyValue1, PropertyName2, PropertyValue2, )控件的屬性及其取值見 uicontrol 函數(shù)的幫助文檔,各種不同的控件由屬性 Style 的值來控制,該屬性取
9、值有:pushbutton, togglebutton, radiobutton, checkbox, edit, text, slider,frame, listbox, popupmenu控件的其他重要的屬性見下表7.3 MATLAB 圖形界面設計基本控件屬性名含義取值情況CData真彩色位圖,該位圖標注在控件上一個矩陣String控件標簽,或listbox 或 popupmenu的項字符串Enable使能控制on, off, inactiveStyle風格,含義如前所示見前頁Valuelistbox或 popupmenu取值情況Callback響應控件的回調(diào)函數(shù)字符串,表示MATLAB函
10、數(shù)或命令控件使用例子7.3 MATLAB 圖形界面設計基本控件h = uicontrol(Style, pushbutton, String, Clear,. Position, 20 150 100 70, Callback, cla);該例子創(chuàng)建一按紐,按下時清除當前坐標軸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ù)選擇不同項目執(zhí)行不同操作,回調(diào)函數(shù) setmap.m見右所示。MATLAB 允許用戶設計出自己所需要的菜單系統(tǒng),菜單的設置是由 uimen 函數(shù)來完成的,其調(diào)用格式為7.4 MALTAB 界面菜單系統(tǒng)設計h =uimenu( Figurehandle, PropertyName1, value1, PropertyName2, value2,.) 如果用戶想在某一個菜單條下定義一個新的子菜單條,則可以使用下面給出的
12、命令格式h =uimenu( parent_menu_handle, PropertyName1, value1, PropertyName2, value2,.) 菜單對象的屬性也有許多,最重要的有以下兩個7.4 MALTAB 界面菜單系統(tǒng)設計菜單條的提示名稱 Label:它可以是一個任意字符串。在菜單項提示的字符串中允許用戶使用 標志,以表示該符號后面的字符在顯示時有一個下劃線修飾,這使得用戶可以用鍵盤鍵容易地激活相應的菜單項。回調(diào)函數(shù) Callback:它可以為一個函數(shù)名稱,也可以是一組 MATLAB 命令。在該菜單被選中以后, MATLAB將自動地調(diào)用此回調(diào)函數(shù)來作出對相應菜單項的響應
13、,如果沒有設置一個合適的回調(diào)函數(shù),則此菜單項也將失去其應有的意義。菜單例子7.4 MALTAB 界面菜單系統(tǒng)設計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)設計% 創(chuàng)建右鍵快捷菜單cmenu = uicontextmenu;% 畫出圖形曲線并與右鍵菜單發(fā)生聯(lián)系hline = plot(1:10, UIContextMenu, cmenu);%定義右鍵菜單項的 Callback 函數(shù)cb1 = set(hline, LineStyle, -);cb2 = set(hline, LineStyle, :);cb3 = s
16、et(hline, LineStyle, -);%定義右鍵菜單項item1 = uimenu(cmenu, Label, dashed, Callback, cb1);item2 = uimenu(cmenu, Label, dotted, Callback, cb2);item3 = uimenu(cmenu, Label, solid, Callback, cb3);MATLAB 提供了一個可視的圖形界面開發(fā)程序 GUIDE。它的含義是 GUI Design Environment。在MATLAB命令窗中鍵入命令 guide 將得到如圖所示界面。7.5 可視界面開發(fā)工具 GUIDE 介紹開
17、發(fā)含GUI界面的程序包含兩個步驟7.5 可視界面開發(fā)工具 GUIDE 介紹設計 GUI 界面及其各個控件布局為各個 GUI 界面控件編程 Callback 函數(shù)從原理上來說,任何含GUI界面的程序都可以用M文件編輯器 Editor來實現(xiàn),但顯然用 GUIDE 工具設計界面要方便得多。GUIDE設計將得到兩個文件,他們是FIG文件:包含界面布局設計及各個圖形對象屬性取值M文件:調(diào)出界面的主程序及各個回調(diào)子程序,一般稱為M應用文件。應用 GUIDE 進行設計時,先要設置好GUIDE應用選項,選擇菜單 ToolsApplication Options,將彈出如下對話框。7.5 可視界面開發(fā)工具 GU
18、IDE 介紹各個選項含義很容易明白,在此不再多說。一般來說,在MATLAB命令窗執(zhí)行的繪圖函數(shù)將在當前圖形窗口繪圖,但一般GUI窗口不希望這樣操作,這可由選項Command-Line Accessibility 來控制,它的含義如下。7.5 可視界面開發(fā)工具 GUIDE 介紹CallbackGUI窗口和坐標軸只能被Callback函數(shù)使用,這是缺省值OffMATLAB命令行命令不能控制GUI界面OnMATLAB命令行命令可以控制GUI界面User-specified根據(jù)窗口的HandleVisibility 和IntegerHandle 屬性值由用戶決定當你選擇 Generate callba
19、ck function prototypes時, GUIDE為每個有 Callback 函數(shù)的控件產(chǎn)生 Callback 原型函數(shù)。Callback 原型函數(shù)語法及參數(shù)如下7.5 可視界面開發(fā)工具 GUIDE 介紹function varargout = objectTag_Callback(h,eventdata,handles,varargin)hCallback 函數(shù)附屬的對象的句柄eventdata保留handles對象句柄varagin傳遞給 Callback 函數(shù)的參數(shù)列表GUI圖形界面對象的屬性可以用 Property Inspector 來查看與修改。7.5 可視界面開發(fā)工具
20、GUIDE 介紹可以用 Object Browser 查看圖形對象的層次圖7.5 可視界面開發(fā)工具 GUIDE 介紹下面介紹各個圖形對象的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 中只有一個被選,要求用戶編程設置其他的 Radio Button 的
22、Value值為零,被選中的那個 Radio Button 系統(tǒng)設為 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 中獲得所選的項目(本例有2個項目被選中)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.例子:設計如下圖所示界面7.6 程序設計舉例與習題第一步:設計界面布局7.6 程序設計舉例與習題第二步:設置各個對象的屬性7.6 程序設計舉例與習題三個 Edit Box 的 String 屬性分別設為 50,120,0:0.001:0.25,作為f1, f2, t的初始
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 主持合同范例
- 風電樁基施工方案
- 養(yǎng)花平臺轉讓合同范例
- 養(yǎng)殖兔子回收合同范例
- 二手特種車輛買賣合同范例
- 供熱設備采購合同范例
- 中介代簽購房合同范例
- 書供銷合同范例
- 中港運輸合同范例
- 臨時砂場轉讓合同范例
- 機械工程原理真題集
- 2025年甘肅甘南州國控資產(chǎn)投資管理集團有限公司面向社會招聘工作人員12人筆試參考題庫附帶答案詳解
- 2025年內(nèi)蒙古北方職業(yè)技術學院單招職業(yè)傾向性測試題庫及答案一套
- 2025年安徽水利水電職業(yè)技術學院單招職業(yè)適應性測試題庫(含答案)
- 中國瓶裝水飲用水項目投資可行性研究報告
- 《心肌缺血心電圖》課件
- 2025年中國建筑股份有限公司招聘筆試參考題庫含答案解析
- 持續(xù)葡萄糖監(jiān)測臨床應用專家共識2024解讀
- 《胸部影像疾病診斷》課件
- DB33T 2157-2018 公共機構綠色數(shù)據(jù)中心建設與運行規(guī)范
- 健康促進機關創(chuàng)建培訓
評論
0/150
提交評論