Matlab-GUI圖形界面設計_第1頁
Matlab-GUI圖形界面設計_第2頁
Matlab-GUI圖形界面設計_第3頁
Matlab-GUI圖形界面設計_第4頁
Matlab-GUI圖形界面設計_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章MATLAB高級圖形設計

6.1句柄圖形對象6.2圖形用戶界面〔GUI〕6.3對話框6.4圖像和聲音6.5視頻與動畫設計6.1句柄圖形對象6.1.1句柄圖形對象體系句柄〔Handle〕是每個圖形對象唯一的標識,不同對象的句柄不能重復,通過句柄可以對圖形對象的屬性進行操作。Root根屏幕Figure圖形UIObjects用戶接口對象CoreObjects核心對象PlotObjects繪圖對象GroupObjects組對象AnnotationObjects注釋對象圖像Axes軸Uibuttongroup按鈕組Uicontrol控件對象Uicontextmenu上下文菜單Uimenu菜單圖像Uipanel面板Uitoolbar工具欄6.1.2句柄圖形對象的操作1.創(chuàng)立句柄圖形對象h_obj=funname('PropertyName',PropertyValue,……)h_obj是圖形對象的句柄;funname是函數名,每個創(chuàng)立的圖形對象函數名與對象名相同;'PropertyName'是屬性名,屬性名是字符串;PropertyValue是屬性值。例:>>h_f=figure('Position',[200300500400])%創(chuàng)立圖形窗>>h_a1=axes('position',[0.1,0.05,.85,.85])%創(chuàng)立坐標軸例6-1:Ex6_1.m2.訪問句柄圖形對象〔1〕獲取當前圖形對象的句柄gcf %獲取當前圖形窗口的句柄gca %獲取當前窗口當前坐標軸的句柄gco %獲取當前窗口當前對象的句柄說明:返回值都是句柄,gco的當前對象句柄是指被鼠標最近點擊過的對象?!?〕查找對象句柄h=findobj(h_obj,'PropertyName',PropertyValue) %查找符合指定屬性值的對象句柄3.句柄圖形對象屬性的獲取和設置a=get(h_obj,'PropertyName')%獲取圖形對象的屬性值a=set(h_obj,'PropertyName',PropertyValue,...)%設置圖形對象的屬性值練習例6-2使用句柄圖形對象繪制正弦曲線〔ex6_2.m〕。>>x=0:0.1:10;>>y=sin(x);%創(chuàng)立無標題窗口>>h_f=figure('Position',[200300300300],'menubar','none');>>h_a1=axes('position',[0.1,0.1,.8,.8]);>>h_t=title(h_a1,'正弦曲線'); %創(chuàng)立標題>>h_l=line(x,y);%建立曲線對象>>set(gca,‘xtick’,[0pi/2pi3*pi/22*pi5*pi/23*pi])%設置x坐標軸刻度%設置坐標軸刻度標注>>set(gca,'xticklabel',{'0','pi/2','pi','3*pi/2','2pi','5*pi/2','3pi'})>>set(gca,'xgrid','on','ygrid','on'); %設置坐標軸屬性>>set(h_l,'linewidth',2) %設置線屬性>>set(get(h_t,'parent'),'color','y') %設置標題的父對象屬性%創(chuàng)立矩形框>>h_ann0=annotation(gcf,'rectangle',[0.10.5.80.4],...'FaceAlpha',.7,'FaceColor','red');補充where_mathsworks.m4.句柄圖形對象的復制和刪除〔1〕句柄圖形對象的復制new_handle=copyobj(h_obj,p)%復制圖形對象h_obj〔2〕刪除句柄圖形對象delete(h_obj) %刪除圖形對象〔3〕刪除所有的句柄對象clf(h_figure) %刪除h_figure窗口中的所有可見對象cla(h_axes) %刪除h_axes坐標軸中的所有可見對象6.2圖形用戶界面〔GUI〕MATLAB的圖形用戶界面提供了包含按鈕、文本框、標簽等一系列交互控件,用戶可以通過鼠標和鍵盤進行交互操作。M文件編輯器運行控件面板對象瀏覽器界面設計區(qū)屬性編輯器菜單編輯器對象對齊工具Tab順序編輯器6.2.1圖形用戶界面概述在MATLAB主界面選擇菜單“File”→“New”→“GUI”,或直接在命令窗口輸入“Guide”命令都可以翻開GUIDE快速開始界面。6.2.2設計一個簡單的GUI界面1.設計一個GUI界面的步驟〔1〕界面布局設計界面布局設計包括以下幾個步驟:通過拖拽控件面板中的控件到界面設計區(qū)中;然后使用對象對齊工具〔AlignObjects〕進行控件的布局調整,使用Tab順序編輯器〔TabOrderEditor〕對各控件的Tab順序進行較好地設置;如果界面需要菜單,那么使用菜單編輯器〔MenuEditor〕進行菜單的設計;添加完控件后在對象瀏覽器〔ObjectBrowser〕中就可以看到所有的圖形對象,完成界面的布局設計?!?〕屬性設置翻開屬性編輯器〔PropertyInspector〕對相關的屬性進行修改。〔3〕編寫回調函數2.一個簡單的圖形用戶界面設計實例例6-3創(chuàng)立一個用戶界面,實現(xiàn)單擊按鈕在坐標軸中繪制正弦曲線的功能,運行界面如圖6-6所示(simplegui.m/simplegui.fig)?!?〕創(chuàng)立一個空白的GUI界面〔2〕創(chuàng)立控件〔3〕調整控件布局〔4〕設置各控件的Tab順序〔5〕設置控件的屬性〔6〕編寫回調函數〔7〕運行GUI界面程序3.GUI開發(fā)環(huán)境的常用工具(1)控件面板按鈕’pushbutton’其上的字符說明其作用靜態(tài)文本’statictext’一般用來作為信息提示用文本框’edittext’讀取用戶數據的文字窗口面板‘panel’概括一組控件,也可以修飾用列表框‘listbox’包含多個選項供用戶選擇滾動條’slider’圖示某個范圍切換按鈕’togglebutton’兩狀態(tài)按鈕,單擊改變其狀態(tài)。單項選擇按鈕’radiobutton’一組選項,其中只能有一個被選中。復選框’checkbox’一組選項,可以選擇多項。下拉菜單’popupmenu’選中時翻開一個列表(2)對象對齊工具(3)對象瀏覽器(4)Tab順序編輯器(5)屬性編輯器窗口(6)菜單編輯器(7)M文件編輯器6.2.3回調函數和GUI程序文件1.回調函數控件接收到用戶的操作時調用的特定函數。一旦某一對象指定的事件發(fā)生,將自動調用某指定的函數,它可以是matlab文件,也可以是一組matlab程序。(1)回調函數的類型每種控件根據控件功能的不同回調函數類型也不同。CloseRequestFcn-關閉窗口時響應函數KeyPressFcn-鍵盤按下時響應函數windowButtonDownFcn-鼠標按下時響應函數WindowButtonMotionFcn-鼠標移動時響應函數CreateFcn和DeleteFcn-建立和刪除對象時響應函數CallBack-對象被選中時響應函數補充實例〔my_callbackf.m〕:建立一個圖形窗口。該圖形窗口沒有菜單條,標題名稱為“我的圖形窗口”,起始于屏幕左下角、寬度和高度分別為450像素點和260像素點,背景顏色為綠色,且當用戶從鍵盤按下任意一個鍵時,將在該圖形窗口繪制出正弦曲線,點擊鼠標時繪制余弦曲線。hf=figure('Color',[0,1,0],'Position',[1,1,450,260],...'Name','我的圖形窗口','NumberTitle','on','MenuBar','none',...'KeyPressFcn','plot(sin(0:0.01:2*pi))','WindowButtonDownFcn','plot(cos(0:0.1:2*pi),''r*'')');

(2)回調函數的自動命名GUIDE根據控件的Tag屬性確定了回調函數的名稱(3)回調函數的輸入參數回調函數的輸入參數也是由GUIDE自動確定的,常用的有hObject、eventdata和handles。functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(當前回調函數的圖形對象句柄〕%eventdatareserved-tobedefinedinafutureversionofMATLAB〔預留輸入參數〕%handlesstructurewithhandlesanduserdata(存放圖形窗口中所有圖形對象句柄的結構體,存儲了界面中所有控件菜單等的句柄,可以在函數之間傳遞數據)例:在pushbutton1_callback回調函數中獲取axes1的屬性:P=get(handles.axes1,’position’);%獲取axes1的位置屬性2.GUI程序文件(1).fig文件保存GUI界面(2).m文件保存GUI程序代碼m文件結構:主函數:注釋說明和窗口的初始化程序functionvarargout=simplegui(varargin)子函數OpeningFcn翻開窗口時的初始化程序OutputFcn函數是窗口的輸出子函數,定義輸出到命令窗口的變量其他的子函數是各控件的回調函數6.2.4按鈕、滾動條和文本框控件1.控件的通用屬性〔1〕Tag屬性圖形對象的標識,是所有圖形對象最重要的屬性,對象的回調函數名自動以Tag屬性命名〔2〕String屬性界面中的標簽文字〔3〕Style屬性控件的類型〔4〕Visible屬性可見on/不可見off〔6〕Enable屬性有效on/無效off/不活動inactive〔5〕Fontsize屬性2.按鈕〔PushButton〕和切換按鈕〔ToggleButton〕按鈕主要用于響應鼠標的單擊事件切換按鈕兩次鼠標單擊響應不同狀態(tài)按鈕和切換按鈕的常用屬性都有Tag、string和value:value為1表示被單擊,為0那么未被單擊;按鈕默認的Tag屬性為pushbutton1,切換按鈕為togglebutton1。當用戶單擊按鈕或切換按鈕調用callback回調函數;string屬性是按鈕上顯示的文字,默認的string屬性與Tag相同。3.滾動條〔Slider〕用來輸入一定范圍內的數值〔1〕常用屬性常用屬性有value、max、min和SliderStep?!?〕回調函數滾動條的常用回調函數是callback,當每次單擊滾動條改變當前值時調用該函數。4.靜態(tài)文本框〔StaticText〕和文本框〔EditText〕靜態(tài)文本框用來顯示文本,不能接收用戶輸入,用于文字說明;文本框可以顯示文本,還可以接收用戶輸入靜態(tài)文本框和文本框的常用屬性都有string和字體屬性。靜態(tài)文本框沒有callback回調函數,一般不接收用戶操作;而文本框有callback回調函數,當修改了文本框內容后可以調用。練習例6-4〔example6_4.fig/.m〕創(chuàng)立一個用戶界面,通過滾動條輸入比例系數,使用文本框顯示滾動條的當前值,單擊按鈕在靜態(tài)文本框中顯示傳遞函數。6.2.5單項選擇按鈕、復選框和面板1.單項選擇按鈕〔RadioButton〕和復選框〔CheckBox〕用于用戶輸入參數單項選擇按鈕和復選框都有value、string和enable屬性,value屬性為1時表示被選中;string屬性為顯示的文本;enable屬性為on表示控件有效,無效控件顯示為灰色。2.面板〔Panel〕和按鈕組〔ButtonGroup〕面板和按鈕組都是容器控件,將一組按鈕、復選框等控件組織起來,便于布局按鈕組對于一組單項選擇按鈕和切換按鈕,每次點擊只能選中一個按鈕或切換按鈕練習例6-5創(chuàng)立一個用戶界面,使用單項選擇按鈕選擇正弦函數的幅值,使用復選框輸入正弦函數的時間范圍,正弦函數的行向量在文本框中顯示運行界面。(example6_5.m/fig)6.2.6下拉菜單、列表框、坐標軸和ActiveX控件1.下拉菜單〔Pop-UpMenu〕和列表框〔ListBox〕都是在下拉列表框中選擇輸入的,下拉菜單類似一組單項選擇按鈕,而列表框類似一組復選框。下拉菜單和列表框的常用屬性都有string和value:string屬性是所有的下拉列表項,可以在屬性編輯器中輸入,在程序代碼中輸入多個列表項時使用“|”分隔;value屬性是當前所選項的序號,如果選擇第一項,那么value=1。2.坐標軸〔Axes〕坐標軸是輸出圖形的區(qū)域,plot命令那么是創(chuàng)立坐標軸并將圖形輸出到坐標軸中,可以使用title、xlabel、ylabel、zlabel和text函數在坐標軸中添加文本。坐標軸的默認Tag屬性是axes1。例6-6創(chuàng)立一個用戶界面,使用列表框輸入二階系統(tǒng)的阻尼系數,在兩個坐標軸中分別繪制階躍響應曲線和脈沖響應曲線(example66.m/.fig)3.ActiveX控件ActiveX控件是使用其他應用程序的控件6.2.7菜單的設計1.菜單編輯器在可視化界面環(huán)境中選擇菜單“Tools”→“MenuEditor…”或單擊工具欄按鈕,就會出現(xiàn)菜單編輯器窗口,其中“MenuBar”是普通菜單設計面板。a)普通菜單設計面板b)彈出式菜單設計面板2.回調函數每個菜單項都有callback回調函數,functionnew_Callback(hObject,eventdata,handles)3.使用句柄對象創(chuàng)立菜單h_menu=uimenu(h_Parent,'PropertyName',ProperValue,…) %創(chuàng)立菜單說明:h_Parent是菜單的父對象,如果是窗體,那么在窗體創(chuàng)立新菜單,如果是菜單那么創(chuàng)立該菜單的子菜單。補充實例(caidan.m):建立一個菜單系統(tǒng)菜單條中含有File和Help兩個菜單項。如果選擇File中的New選項,那么將顯示NewItem字樣,如果選擇File中的Open選項,那么將顯示出OpenItem字樣。File中的Save菜單項初始時處于禁選狀態(tài),在選擇Help選項之后將此菜單項恢復成可選狀態(tài),如果選擇File中的SaveAs選項,那么將顯示SaveAsItem字樣。如果選擇File中的Exit選項,那么將關閉當前窗口。如果選擇Help中About…選項,那么將顯示HelpItem字樣,并將Save菜單設置成可選狀態(tài)。程序如下: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],...'Name','菜單設計例如一','NumberTitle','off','MenuBar','none');hfile=uimenu(hf,'label','&File');hhelp=uimenu(hf,'label','&Help');uimenu(hfile,'label','&New','call','disp(''NewItem'')');uimenu(hfile,'label','&Open','call','disp(''OpenItem'')');hsave=uimenu(hfile,'label','&Save','Enable','off');uimenu(hfile,'label','Save&As','call','disp(''SaveAsItem'')');uimenu(hfile,'label','&Exit','separator','on','call','close(hf)');uimenu(hhelp,'label','About...','call',...['disp(''HelpItem'');','set(hsave,''Enable'',''on'')']);6.3對話框6.3.1輸入框輸入框為用戶的輸入信息提供了界面,使用inputdlg函數創(chuàng)立,并提供了“Ok”和“Cancel”兩個按鈕,inputdlg函數的命令格式如下:answer=inputdlg(prompt,title,lineno,defans,addopts) %創(chuàng)立輸入框例(ex6_7.m):prompt={‘請輸入正弦函數的頻率’};%提示defans={'10'};w=inputdlg(prompt,'輸入',1,defans)6.3.2輸出框1.輸出消息框輸出消息框用來顯示各種輸出信息,使用msgbox函數來創(chuàng)立,只有一個“Ok”按鈕,并利用圖標表示不同的信息類型,msgbox函數的命令格式如下:h=msgbox(message,title,icon,icondata,iconcmap,createmode) %創(chuàng)立輸出消息框例(ex6_8.m):message='輸入參數超出范圍';icon='error';h=msgbox(message,'出錯',icon)練習2.專用輸出框warndlgerrordlghelpdlgquestdlglistdlg補充實例〔ex6_91.m〕h=warndlg({'error:','code1111.'},'Warning')h=errordlg({'error:','code1111.'},'Error')h=helpdlg({'幫助信息:','幫助信息對話框和警告錯誤對話框根本一致,只是圖標不同!'},'幫助')6.3.3文件管理框1.翻開和保存文件利用uigetfile函數顯示翻開文件對話框;uiputfile函數顯示保存文件對話框[fname,pname]=uigetfile(ffilter,strtitle,x,y)ffilter為文件名過濾器;strtiltle為對話框窗口標題欄的顯示內容;x、y為對話框出現(xiàn)的位置,省略那么采用默認位置。返回文件名字和路徑例:[f,p]=uigetfile('*.m;*.txt','請選擇一個文件')f=fileprint.mp=E:\MATLABR11\work\2.瀏覽文件夾uigetdir函數可以瀏覽文件夾例:dirname=uigetdir('C:\MATLAB701')6.4圖像和聲音6.4.1圖像MATLAB7.3的圖像處理工具箱可以讀入、顯示和處理多種標準的圖像格式文件,包括.bmp、.gif、.jpg、.tif、.png、.hdf、.pcx、.xwd、.ico和.cur等。1.圖像類型〔1〕索引圖像〔2〕灰度〔強度〕圖像〔3〕RGB〔真彩〕圖像2.圖像處理函數〔1〕圖像文件的信息圖像文件可以使用imfinfo函數查詢其信息,包括文件名、文件大小、圖像尺寸、圖像類型和每個像素的位數等信息。例:s1=imfinfo('nxq.jpg')〔2〕圖像的讀寫[x,map]=imread(filename,fmt) %讀取圖像文件imwrite(x,map,filename,fmt) %寫入圖像文件說明:x是圖像文件的數據矩陣;map是顏色表矩陣,可省略,當imread讀取的不是索引圖像時那么為[],當imwrite寫入的不是索引圖像,map省略;filename是圖像文件名;fmt是文件格式,如'bmp'、'cur'、'gif'、'jpg'或'ico'等,可省略?!?〕圖像的顯示h=imshow(x,[lowhigh]) %按顏色表設定顯示灰度圖像h=imshow(x,map) %顯示圖像h=imshow(filename) %顯示圖像文件例:圖像的讀入顯示〔myimage.m〕例:做一個花瓶,如圖示?!蔡崾荆鹤鲆粋€旋轉體外表,調入一幅圖像對該外表進行彩繪,即用圖像的色圖索引作為外表體的色圖索引〕huaping.m6.4.2聲音1.讀取和寫入聲音文件數據MATLAB7.3提供了auread和wavread函數分別讀取.au和.wav聲音文件的數據,auwrite和wavwrite函數將聲音數據寫入文件,aufinfo和wavfinfo函數用來獲取.au和.wav文件的信息。2.播放聲音文件sound和soundsc函數實現(xiàn)將向量轉換為音頻信號,并轉換到speaker進行的播放;audioplayer創(chuàng)立一個音頻播放器對象,用來播放聲音信號;beep實現(xiàn)響鈴。例6-13(mysound.m)6.5視頻與動畫設計

6.5.1視頻MATLAB7.3的視頻幀稱為MATLABMovie,是結構體類型,包括cdata和colormap兩個域,分別用來存放圖像數據和顏色表,通

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論