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

下載本文檔

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

文檔簡介

第6章MATLAB高級圖形設(shè)計(jì)

6.1句柄圖形對象6.2圖形用戶界面〔GUI〕6.3對話框6.4圖像和聲音6.5視頻與動畫設(shè)計(jì)6.1句柄圖形對象6.1.1句柄圖形對象體系句柄〔Handle〕是每個圖形對象唯一的標(biāo)識,不同對象的句柄不能重復(fù),通過句柄可以對圖形對象的屬性進(jìn)行操作。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是函數(shù)名,每個創(chuàng)立的圖形對象函數(shù)名與對象名相同;'PropertyName'是屬性名,屬性名是字符串;PropertyValue是屬性值。例:>>h_f=figure('Position',[200300500400])%創(chuàng)立圖形窗>>h_a1=axes('position',[0.1,0.05,.85,.85])%創(chuàng)立坐標(biāo)軸例6-1:Ex6_1.m2.訪問句柄圖形對象〔1〕獲取當(dāng)前圖形對象的句柄gcf %獲取當(dāng)前圖形窗口的句柄gca %獲取當(dāng)前窗口當(dāng)前坐標(biāo)軸的句柄gco %獲取當(dāng)前窗口當(dāng)前對象的句柄說明:返回值都是句柄,gco的當(dāng)前對象句柄是指被鼠標(biāo)最近點(diǎn)擊過的對象。〔2〕查找對象句柄h=findobj(h_obj,'PropertyName',PropertyValue) %查找符合指定屬性值的對象句柄3.句柄圖形對象屬性的獲取和設(shè)置a=get(h_obj,'PropertyName')%獲取圖形對象的屬性值a=set(h_obj,'PropertyName',PropertyValue,...)%設(shè)置圖形對象的屬性值練習(xí)例6-2使用句柄圖形對象繪制正弦曲線〔ex6_2.m〕。>>x=0:0.1:10;>>y=sin(x);%創(chuàng)立無標(biāo)題窗口>>h_f=figure('Position',[200300300300],'menubar','none');>>h_a1=axes('position',[0.1,0.1,.8,.8]);>>h_t=title(h_a1,'正弦曲線'); %創(chuàng)立標(biāo)題>>h_l=line(x,y);%建立曲線對象>>set(gca,‘xtick’,[0pi/2pi3*pi/22*pi5*pi/23*pi])%設(shè)置x坐標(biāo)軸刻度%設(shè)置坐標(biāo)軸刻度標(biāo)注>>set(gca,'xticklabel',{'0','pi/2','pi','3*pi/2','2pi','5*pi/2','3pi'})>>set(gca,'xgrid','on','ygrid','on'); %設(shè)置坐標(biāo)軸屬性>>set(h_l,'linewidth',2) %設(shè)置線屬性>>set(get(h_t,'parent'),'color','y') %設(shè)置標(biāo)題的父對象屬性%創(chuàng)立矩形框>>h_ann0=annotation(gcf,'rectangle',[0.10.5.80.4],...'FaceAlpha',.7,'FaceColor','red');補(bǔ)充where_mathsworks.m4.句柄圖形對象的復(fù)制和刪除〔1〕句柄圖形對象的復(fù)制new_handle=copyobj(h_obj,p)%復(fù)制圖形對象h_obj〔2〕刪除句柄圖形對象delete(h_obj) %刪除圖形對象〔3〕刪除所有的句柄對象clf(h_figure) %刪除h_figure窗口中的所有可見對象cla(h_axes) %刪除h_axes坐標(biāo)軸中的所有可見對象6.2圖形用戶界面〔GUI〕MATLAB的圖形用戶界面提供了包含按鈕、文本框、標(biāo)簽等一系列交互控件,用戶可以通過鼠標(biāo)和鍵盤進(jìn)行交互操作。M文件編輯器運(yùn)行控件面板對象瀏覽器界面設(shè)計(jì)區(qū)屬性編輯器菜單編輯器對象對齊工具Tab順序編輯器6.2.1圖形用戶界面概述在MATLAB主界面選擇菜單“File”→“New”→“GUI”,或直接在命令窗口輸入“Guide”命令都可以翻開GUIDE快速開始界面。6.2.2設(shè)計(jì)一個簡單的GUI界面1.設(shè)計(jì)一個GUI界面的步驟〔1〕界面布局設(shè)計(jì)界面布局設(shè)計(jì)包括以下幾個步驟:通過拖拽控件面板中的控件到界面設(shè)計(jì)區(qū)中;然后使用對象對齊工具〔AlignObjects〕進(jìn)行控件的布局調(diào)整,使用Tab順序編輯器〔TabOrderEditor〕對各控件的Tab順序進(jìn)行較好地設(shè)置;如果界面需要菜單,那么使用菜單編輯器〔MenuEditor〕進(jìn)行菜單的設(shè)計(jì);添加完控件后在對象瀏覽器〔ObjectBrowser〕中就可以看到所有的圖形對象,完成界面的布局設(shè)計(jì)。〔2〕屬性設(shè)置翻開屬性編輯器〔PropertyInspector〕對相關(guān)的屬性進(jìn)行修改?!?〕編寫回調(diào)函數(shù)2.一個簡單的圖形用戶界面設(shè)計(jì)實(shí)例例6-3創(chuàng)立一個用戶界面,實(shí)現(xiàn)單擊按鈕在坐標(biāo)軸中繪制正弦曲線的功能,運(yùn)行界面如圖6-6所示(simplegui.m/simplegui.fig)。〔1〕創(chuàng)立一個空白的GUI界面〔2〕創(chuàng)立控件〔3〕調(diào)整控件布局〔4〕設(shè)置各控件的Tab順序〔5〕設(shè)置控件的屬性〔6〕編寫回調(diào)函數(shù)〔7〕運(yùn)行GUI界面程序3.GUI開發(fā)環(huán)境的常用工具(1)控件面板按鈕’pushbutton’其上的字符說明其作用靜態(tài)文本’statictext’一般用來作為信息提示用文本框’edittext’讀取用戶數(shù)據(jù)的文字窗口面板‘panel’概括一組控件,也可以修飾用列表框‘listbox’包含多個選項(xiàng)供用戶選擇滾動條’slider’圖示某個范圍切換按鈕’togglebutton’兩狀態(tài)按鈕,單擊改變其狀態(tài)。單項(xiàng)選擇按鈕’radiobutton’一組選項(xiàng),其中只能有一個被選中。復(fù)選框’checkbox’一組選項(xiàng),可以選擇多項(xiàng)。下拉菜單’popupmenu’選中時翻開一個列表(2)對象對齊工具(3)對象瀏覽器(4)Tab順序編輯器(5)屬性編輯器窗口(6)菜單編輯器(7)M文件編輯器6.2.3回調(diào)函數(shù)和GUI程序文件1.回調(diào)函數(shù)控件接收到用戶的操作時調(diào)用的特定函數(shù)。一旦某一對象指定的事件發(fā)生,將自動調(diào)用某指定的函數(shù),它可以是matlab文件,也可以是一組matlab程序。(1)回調(diào)函數(shù)的類型每種控件根據(jù)控件功能的不同回調(diào)函數(shù)類型也不同。CloseRequestFcn-關(guān)閉窗口時響應(yīng)函數(shù)KeyPressFcn-鍵盤按下時響應(yīng)函數(shù)windowButtonDownFcn-鼠標(biāo)按下時響應(yīng)函數(shù)WindowButtonMotionFcn-鼠標(biāo)移動時響應(yīng)函數(shù)CreateFcn和DeleteFcn-建立和刪除對象時響應(yīng)函數(shù)CallBack-對象被選中時響應(yīng)函數(shù)補(bǔ)充實(shí)例〔my_callbackf.m〕:建立一個圖形窗口。該圖形窗口沒有菜單條,標(biāo)題名稱為“我的圖形窗口”,起始于屏幕左下角、寬度和高度分別為450像素點(diǎn)和260像素點(diǎn),背景顏色為綠色,且當(dāng)用戶從鍵盤按下任意一個鍵時,將在該圖形窗口繪制出正弦曲線,點(diǎn)擊鼠標(biāo)時繪制余弦曲線。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)回調(diào)函數(shù)的自動命名GUIDE根據(jù)控件的Tag屬性確定了回調(diào)函數(shù)的名稱(3)回調(diào)函數(shù)的輸入?yún)?shù)回調(diào)函數(shù)的輸入?yún)?shù)也是由GUIDE自動確定的,常用的有hObject、eventdata和handles。functionpushbutton1_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton1(當(dāng)前回調(diào)函數(shù)的圖形對象句柄〕%eventdatareserved-tobedefinedinafutureversionofMATLAB〔預(yù)留輸入?yún)?shù)〕%handlesstructurewithhandlesanduserdata(存放圖形窗口中所有圖形對象句柄的結(jié)構(gòu)體,存儲了界面中所有控件菜單等的句柄,可以在函數(shù)之間傳遞數(shù)據(jù))例:在pushbutton1_callback回調(diào)函數(shù)中獲取axes1的屬性:P=get(handles.axes1,’position’);%獲取axes1的位置屬性2.GUI程序文件(1).fig文件保存GUI界面(2).m文件保存GUI程序代碼m文件結(jié)構(gòu):主函數(shù):注釋說明和窗口的初始化程序functionvarargout=simplegui(varargin)子函數(shù)OpeningFcn翻開窗口時的初始化程序OutputFcn函數(shù)是窗口的輸出子函數(shù),定義輸出到命令窗口的變量其他的子函數(shù)是各控件的回調(diào)函數(shù)6.2.4按鈕、滾動條和文本框控件1.控件的通用屬性〔1〕Tag屬性圖形對象的標(biāo)識,是所有圖形對象最重要的屬性,對象的回調(diào)函數(shù)名自動以Tag屬性命名〔2〕String屬性界面中的標(biāo)簽文字〔3〕Style屬性控件的類型〔4〕Visible屬性可見on/不可見off〔6〕Enable屬性有效on/無效off/不活動inactive〔5〕Fontsize屬性2.按鈕〔PushButton〕和切換按鈕〔ToggleButton〕按鈕主要用于響應(yīng)鼠標(biāo)的單擊事件切換按鈕兩次鼠標(biāo)單擊響應(yīng)不同狀態(tài)按鈕和切換按鈕的常用屬性都有Tag、string和value:value為1表示被單擊,為0那么未被單擊;按鈕默認(rèn)的Tag屬性為pushbutton1,切換按鈕為togglebutton1。當(dāng)用戶單擊按鈕或切換按鈕調(diào)用callback回調(diào)函數(shù);string屬性是按鈕上顯示的文字,默認(rèn)的string屬性與Tag相同。3.滾動條〔Slider〕用來輸入一定范圍內(nèi)的數(shù)值〔1〕常用屬性常用屬性有value、max、min和SliderStep?!?〕回調(diào)函數(shù)滾動條的常用回調(diào)函數(shù)是callback,當(dāng)每次單擊滾動條改變當(dāng)前值時調(diào)用該函數(shù)。4.靜態(tài)文本框〔StaticText〕和文本框〔EditText〕靜態(tài)文本框用來顯示文本,不能接收用戶輸入,用于文字說明;文本框可以顯示文本,還可以接收用戶輸入靜態(tài)文本框和文本框的常用屬性都有string和字體屬性。靜態(tài)文本框沒有callback回調(diào)函數(shù),一般不接收用戶操作;而文本框有callback回調(diào)函數(shù),當(dāng)修改了文本框內(nèi)容后可以調(diào)用。練習(xí)例6-4〔example6_4.fig/.m〕創(chuàng)立一個用戶界面,通過滾動條輸入比例系數(shù),使用文本框顯示滾動條的當(dāng)前值,單擊按鈕在靜態(tài)文本框中顯示傳遞函數(shù)。6.2.5單項(xiàng)選擇按鈕、復(fù)選框和面板1.單項(xiàng)選擇按鈕〔RadioButton〕和復(fù)選框〔CheckBox〕用于用戶輸入?yún)?shù)單項(xiàng)選擇按鈕和復(fù)選框都有value、string和enable屬性,value屬性為1時表示被選中;string屬性為顯示的文本;enable屬性為on表示控件有效,無效控件顯示為灰色。2.面板〔Panel〕和按鈕組〔ButtonGroup〕面板和按鈕組都是容器控件,將一組按鈕、復(fù)選框等控件組織起來,便于布局按鈕組對于一組單項(xiàng)選擇按鈕和切換按鈕,每次點(diǎn)擊只能選中一個按鈕或切換按鈕練習(xí)例6-5創(chuàng)立一個用戶界面,使用單項(xiàng)選擇按鈕選擇正弦函數(shù)的幅值,使用復(fù)選框輸入正弦函數(shù)的時間范圍,正弦函數(shù)的行向量在文本框中顯示運(yùn)行界面。(example6_5.m/fig)6.2.6下拉菜單、列表框、坐標(biāo)軸和ActiveX控件1.下拉菜單〔Pop-UpMenu〕和列表框〔ListBox〕都是在下拉列表框中選擇輸入的,下拉菜單類似一組單項(xiàng)選擇按鈕,而列表框類似一組復(fù)選框。下拉菜單和列表框的常用屬性都有string和value:string屬性是所有的下拉列表項(xiàng),可以在屬性編輯器中輸入,在程序代碼中輸入多個列表項(xiàng)時使用“|”分隔;value屬性是當(dāng)前所選項(xiàng)的序號,如果選擇第一項(xiàng),那么value=1。2.坐標(biāo)軸〔Axes〕坐標(biāo)軸是輸出圖形的區(qū)域,plot命令那么是創(chuàng)立坐標(biāo)軸并將圖形輸出到坐標(biāo)軸中,可以使用title、xlabel、ylabel、zlabel和text函數(shù)在坐標(biāo)軸中添加文本。坐標(biāo)軸的默認(rèn)Tag屬性是axes1。例6-6創(chuàng)立一個用戶界面,使用列表框輸入二階系統(tǒng)的阻尼系數(shù),在兩個坐標(biāo)軸中分別繪制階躍響應(yīng)曲線和脈沖響應(yīng)曲線(example66.m/.fig)3.ActiveX控件ActiveX控件是使用其他應(yīng)用程序的控件6.2.7菜單的設(shè)計(jì)1.菜單編輯器在可視化界面環(huán)境中選擇菜單“Tools”→“MenuEditor…”或單擊工具欄按鈕,就會出現(xiàn)菜單編輯器窗口,其中“MenuBar”是普通菜單設(shè)計(jì)面板。a)普通菜單設(shè)計(jì)面板b)彈出式菜單設(shè)計(jì)面板2.回調(diào)函數(shù)每個菜單項(xiàng)都有callback回調(diào)函數(shù),functionnew_Callback(hObject,eventdata,handles)3.使用句柄對象創(chuàng)立菜單h_menu=uimenu(h_Parent,'PropertyName',ProperValue,…) %創(chuàng)立菜單說明:h_Parent是菜單的父對象,如果是窗體,那么在窗體創(chuàng)立新菜單,如果是菜單那么創(chuàng)立該菜單的子菜單。補(bǔ)充實(shí)例(caidan.m):建立一個菜單系統(tǒng)菜單條中含有File和Help兩個菜單項(xiàng)。如果選擇File中的New選項(xiàng),那么將顯示NewItem字樣,如果選擇File中的Open選項(xiàng),那么將顯示出OpenItem字樣。File中的Save菜單項(xiàng)初始時處于禁選狀態(tài),在選擇Help選項(xiàng)之后將此菜單項(xiàng)恢復(fù)成可選狀態(tài),如果選擇File中的SaveAs選項(xiàng),那么將顯示SaveAsItem字樣。如果選擇File中的Exit選項(xiàng),那么將關(guān)閉當(dāng)前窗口。如果選擇Help中About…選項(xiàng),那么將顯示HelpItem字樣,并將Save菜單設(shè)置成可選狀態(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','菜單設(shè)計(jì)例如一','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輸入框輸入框?yàn)橛脩舻妮斎胄畔⑻峁┝私缑?,使用inputdlg函數(shù)創(chuàng)立,并提供了“Ok”和“Cancel”兩個按鈕,inputdlg函數(shù)的命令格式如下:answer=inputdlg(prompt,title,lineno,defans,addopts) %創(chuàng)立輸入框例(ex6_7.m):prompt={‘請輸入正弦函數(shù)的頻率’};%提示defans={'10'};w=inputdlg(prompt,'輸入',1,defans)6.3.2輸出框1.輸出消息框輸出消息框用來顯示各種輸出信息,使用msgbox函數(shù)來創(chuàng)立,只有一個“Ok”按鈕,并利用圖標(biāo)表示不同的信息類型,msgbox函數(shù)的命令格式如下:h=msgbox(message,title,icon,icondata,iconcmap,createmode) %創(chuàng)立輸出消息框例(ex6_8.m):message='輸入?yún)?shù)超出范圍';icon='error';h=msgbox(message,'出錯',icon)練習(xí)2.專用輸出框warndlgerrordlghelpdlgquestdlglistdlg補(bǔ)充實(shí)例〔ex6_91.m〕h=warndlg({'error:','code1111.'},'Warning')h=errordlg({'error:','code1111.'},'Error')h=helpdlg({'幫助信息:','幫助信息對話框和警告錯誤對話框根本一致,只是圖標(biāo)不同!'},'幫助')6.3.3文件管理框1.翻開和保存文件利用uigetfile函數(shù)顯示翻開文件對話框;uiputfile函數(shù)顯示保存文件對話框[fname,pname]=uigetfile(ffilter,strtitle,x,y)ffilter為文件名過濾器;strtiltle為對話框窗口標(biāo)題欄的顯示內(nèi)容;x、y為對話框出現(xiàn)的位置,省略那么采用默認(rèn)位置。返回文件名字和路徑例:[f,p]=uigetfile('*.m;*.txt','請選擇一個文件')f=fileprint.mp=E:\MATLABR11\work\2.瀏覽文件夾uigetdir函數(shù)可以瀏覽文件夾例:dirname=uigetdir('C:\MATLAB701')6.4圖像和聲音6.4.1圖像MATLAB7.3的圖像處理工具箱可以讀入、顯示和處理多種標(biāo)準(zhǔn)的圖像格式文件,包括.bmp、.gif、.jpg、.tif、.png、.hdf、.pcx、.xwd、.ico和.cur等。1.圖像類型〔1〕索引圖像〔2〕灰度〔強(qiáng)度〕圖像〔3〕RGB〔真彩〕圖像2.圖像處理函數(shù)〔1〕圖像文件的信息圖像文件可以使用imfinfo函數(shù)查詢其信息,包括文件名、文件大小、圖像尺寸、圖像類型和每個像素的位數(shù)等信息。例:s1=imfinfo('nxq.jpg')〔2〕圖像的讀寫[x,map]=imread(filename,fmt) %讀取圖像文件imwrite(x,map,filename,fmt) %寫入圖像文件說明:x是圖像文件的數(shù)據(jù)矩陣;map是顏色表矩陣,可省略,當(dāng)imread讀取的不是索引圖像時那么為[],當(dāng)imwrite寫入的不是索引圖像,map省略;filename是圖像文件名;fmt是文件格式,如'bmp'、'cur'、'gif'、'jpg'或'ico'等,可省略?!?〕圖像的顯示h=imshow(x,[lowhigh]) %按顏色表設(shè)定顯示灰度圖像h=imshow(x,map) %顯示圖像h=imshow(filename) %顯示圖像文件例:圖像的讀入顯示〔myimage.m〕例:做一個花瓶,如圖示。〔提示:做一個旋轉(zhuǎn)體外表,調(diào)入一幅圖像對該外表進(jìn)行彩繪,即用圖像的色圖索引作為外表體的色圖索引〕huaping.m6.4.2聲音1.讀取和寫入聲音文件數(shù)據(jù)MATLAB7.3提供了auread和wavread函數(shù)分別讀取.au和.wav聲音文件的數(shù)據(jù),auwrite和wavwrite函數(shù)將聲音數(shù)據(jù)寫入文件,aufinfo和wavfinfo函數(shù)用來獲取.au和.wav文件的信息。2.播放聲音文件sound和soundsc函數(shù)實(shí)現(xiàn)將向量轉(zhuǎn)換為音頻信號,并轉(zhuǎn)換到speaker進(jìn)行的播放;audioplayer創(chuàng)立一個音頻播放器對象,用來播放聲音信號;beep實(shí)現(xiàn)響鈴。例6-13(mysound.m)6.5視頻與動畫設(shè)計(jì)

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

溫馨提示

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

最新文檔

評論

0/150

提交評論