matlab圖形界面編程課件_第1頁
matlab圖形界面編程課件_第2頁
matlab圖形界面編程課件_第3頁
matlab圖形界面編程課件_第4頁
matlab圖形界面編程課件_第5頁
已閱讀5頁,還剩153頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第九章圖形界面編程

(GraphicalUserInterface,GUI)第九章圖形界面編程一、常用對話框的設計

二、圖形界面設計

三、可視化圖形用戶界面設計一、常用對話框的設計

二、圖形界面設計

三、可視化圖形用一、常用對話框的設計(1)創建對話框dialogh=dialog('PropertyName',ProperValue,...)

返回一個對話框句柄。該函數產生一個圖形對象并為對話框設置推薦的圖形屬性。Note:該函數的屬性是圖形Figure的屬性Example:h=dialog('Name','圖形對話框','Position',...[240,240,200,50],'Color','r')一、常用對話框的設計(1)創建對話框dialogExamp(2)創建輸入對話框inputdlganswer=inputdlg(prompt)answer=inputdlg(prompt,title)answer=inputdlg(prompt,title,lineNo)answer=inputdlg(prompt,title,lineNo,defAns)answer=inputdlg(prompt,title,lineNo,defAns,Resize)對應描述:prompt是一個包含提示字符串的數組。創建一個模式對話框并返回用戶在數組中輸入的內容title為對話框指定一個標題lineNo為用戶的每個輸入值指定輸入的行數,可以是標量、列向量或矩陣。列向量為一個提示符指定輸入的行數;矩陣是m*2矩陣,其中m是對話框中提示符的個數,矩陣的第一列為指定輸入的行數;第二列指定字符的域寬。defAns指定每個提示符的默認值Resize說明對話框是否改變尺寸,取值'on'和'off'。(2)創建輸入對話框inputdlg對應描述:prompt是

例ans=inputdlg('請輸入題號(1-10),輸入0退出','Matlabzuoye')例pp={'a=?','b=?'}ans=inputdlg(pp,'InputParam')matlab圖形界面編程課件例inputdlg('AAAAAAA')inputdlg('AAAAAAA','inputdialog')inputdlg('AAAAAAA','inputdialog',2)inputdlg('AAAAAAA','inputdialog',1,{'OOOOOOOO'})inputdlg('AAAAAAA','inputdialog',1,{'OOOOOOOO'},'on')Cellarray例創建輸入一個整數和色圖名稱的對話框,每行只允許輸入一行。prompt={'EnterMatrixsize','Entercolomapname'};title='Inputdataforpeaksfunction';lines=1;def={'20','hsv'};answer=inputdlg(prompt,title,lines,def)例Cellarray例創建輸入一個整數和色圖名稱的對話(3)創建消息對話框msgboxmsgbox(message)msgbox(message,title)msgbox(message,title,'icon')msgbox(message,title,'custom',iconData,iconCmap)msgbox(...,'createMode')h=msgbox(...)對應描述:產生一個消息對話框title為消息對話框指定標題Icon指定在消息對話框中顯示哪一個圖標.'icon'可以是'none'、'error'、'help'、'warn'、'custom'定義一個用戶定制的圖標。iconData包含著定義圖標的圖形數據;iconCmap是圖形所用的色圖指定消息框是否為模式化的,如果是非模式化的,是否要取代其它有同樣標題的消息框。''createMode'取'modal'、'non-modal'和'replace'返回一個對話框的句柄h,它是一個圖形對象的句柄。(3)創建消息對話框msgboxNote:消息對話中的消息自動換行來適應具有適當尺寸的圖框。Message是一個字符串向量、字符串矩陣或數組。例

mess={'Inputdlghelp','Listdlghelp';'Msgboxhelp',...'Pagedlghelp'}msgbox(mess,'MyDialogHelp','help')mess='Inputdlghelp''Listdlghelp''Msgboxhelp''Pagedlghelp'Note:消息對話中的消息自動換行來適應具有適當尺寸的圖框。(4)創建錯誤對話框errordlgerrordlgerrordlg('eerrorstring')errordlg('eerrorstring','dlgname')errordlg('eerrorstring','dlgname','on')h=errordlg(...)相應描述:a)顯示一個包含字符串”Thisisthedefaulterrorstring”的名為”ErrorDialog”的對話框b)顯示一個包含字符串”errorstring”的名為”ErrorDialog”的對話框;c)顯示一個包含字符串”errorstring”的名”dlgname”的對話框d)指定是否取代一個已經存在的有相同名字的對話框。'on'表示把一個有相同名字的出錯對話框提在前臺;e)返回一個錯誤對話框句柄。(4)創建錯誤對話框errordlg相應描述:b)顯示一個Note:MATLAB自動改變對話框的大小來適應字符串'errorstring'的長度.例errordlgerrordlg('Filenotfound')errordlg('Filenotfound','FileError')errordlg('Filenotfound','FileError','on')Note:MATLAB自動改變對話框的大小來適應字符串(5)創建問題對話框questdlgbutton=questdlg('qstring')打開問題提示對話框,有三個按鈕,分別為:yes,no和cancel,'questdlg'確定提示信息。button=questdlg('qstring','title')title確定對話框標題。button=questdlg('qstring''title','default')當按回車鍵時,返回default值,default必須是yes,no或cancel之一。button=questdlg('qstring','title','str1','str2','default')打開問題提示對話框,有兩個按鈕,分別由str1和str2確定,'qstdlg'確定提示信息,default必須是str1或str2之一。button=questdlg('qstring','title','str1','str2','str3','default')打開問題提示對話框,有三個按鈕,分別由str1,str2和str3確定,'qstdlg'確定提示信息,default必須是str1,str2或str3之一。(5)創建問題對話框questdlg例生成一個問詢對話框,詢問用戶是否繼續一個假定的操作。button=questdlg('Doyouwanttocontinue?','ContinueOperation','Yes','No','Help','No')

ifstrcmp(button,'Yes')

disp('Creatingfile')

elseifstrcmp(button,'No')

disp('Canceledfileoperation')

elseifstrcmp(button,'Help')

disp('Sorry,nohelp')

end

例生成一個問詢對話框,詢問用戶是否繼續一個假定的操作。(6)創建警告對話框warndlgh=warndlg('warningstring','dlgname')打開警告信息對話框,顯示warningstring信息,dlgname確定對話框標題,h為返回對話句柄。

例warndlg('PressingOKwillclearMemory',...'Warning!!!')(6)創建警告對話框warndlg例(7)顯示幫助對話框helpdlghelpdlghelpdlg('helpstring')helpdlg('helpstring','dlgname')h=helpdlg(...)Note:MATLAB將'helpstring'中的內容自動換行來適應一個對話框的長度。例helpdlghelpdlg('youcanselect10pointsfromfigure')helpdlg('youcanselect10pointsfromfigure',...'pointsselection')(7)顯示幫助對話框helpdlg例(8)創建選擇列表內容的對話框listdlg[Selection,ok]=listdlg('ListString',S,...)其中,Selection是已經選擇的字符串的索引向量;在只有一個選項的模式下,它的長度為1;當點擊OK按鈕時,ok=1;當點擊Cancel按鈕時,ok=0;當ok=0時,Selection=[];對話框還有一個Selectall按鈕。輸入參數和其值的形式列表如下:(8)創建選擇列表內容的對話框listdlg其中,輸入參數和參數描述ListString指定列表選框的字符串數組SelectionMode值為'sigle'或'multiple'ListSize用像素來衡量尺寸,[wh],[16030]InitialValue最初被選擇的列表框選項的索引向量,默認值為1,即第一項Name對話框標題名稱PromptString在列表框上部的正文中出現的字符串的數組或矩陣。默認值為{}OKStringOK按鈕上的字符串,默認為OKCancelStringCancel按鈕上的字符串,默認為Canceluh用戶界面控制按鈕的高度,用pixel表示,18fus框架和用戶截面控制按鈕的間隔,pixel,18ffs框架數字的間隔,pixel,8參數描述ListString指定列表選框的字符串數組Se例

創建用戶從當前目錄中選一個文件的對話框。函數將返回一個向量,該向量的第一個元素是被選文件的索引,第二個元素在沒有做選擇時為0,做了選擇后為1。d=dir;str={}[s,v]=listdlg('PromptString','Selectafile:',...'SelectionMode','single','ListString',str)例創建用戶從當前目錄中選一個文件的對話框。d=di例創建一個自己的列表對話框str={'AAAAAA','BBBBBBB','CCCCCCC','DDDDDDD'};[s,v]=listdlg('ListString',str,'SelectionMode','multiple',...'ListSize',[200,100],'Name','MyListDialog',...'PromptString','Pleaseselectfollowoptions','ffs',18)MATLAB例創建一個自己的列表對話框str={'AAAAAA','(9)創建顯示頁面的版面對話框pagedlgpagesetupdlgpagesetupdlg(fig)對應描述對當前圖形顯示一個頁面的版面對話框,使用戶可以進行頁面設置對由fig指定的圖形顯示一個頁面設置對話框例figurex=0:pi/100:2*pi;y=sin(x);plot(x,y)pagesetupdlg(9)創建顯示頁面的版面對話框pagedlg例matlab圖形界面編程課件(10)創建顯示打印對話框printdlgprintdlgprintdlg(fig)printdlg('-crossplatform',fig)對應描述打印當前的圖形生成一個對話框,由此用戶可以打印句柄fig指定的圖形窗口。但該命令不能打印用戶菜單對微軟的Windows操作系統顯示一種標準的交叉平臺式的MATLAB打印對話框。(10)創建顯示打印對話框printdlg例t=0:pi/100:2*pi;y=sin(x);plot(x,y)printdlg例(11)進程條h=waitbar(x,'title')

顯示以title為標題的進程條,x為進程條的比例長度,其值必須在0到1之間,h為返回的進程條對象的句柄。waitbar(x,'title','creatcancelbtn','button_callback')在進程條上使用creatcancelbtn參數創建一個撤銷按鈕,在進程中按下撤銷按鈕將調用button_callback函數。waitbar(...,property_name,property_value,...)

選擇其它由prompt_name定義的參數,參數值由prompt_value指定。(11)進程條例clch=waitbar(0,'pleasewait...');pause;%暫停,擊任一鍵繼續

fori=1:1000

waitbar(i/1000,h,'MyProcess...')endclose(h)例(12)打開文件對話框uigetfileuigetfile

顯示一個用于檢索一個文件的對話框,列出了當前目前中的文件和目錄。uigetfile('FilterSpec')FilterSpec確定最先顯示的文章,它可以用通配符*。uigetfile('FilterSpec','DialogTitle')uigetfile('FilterSpec','DialogTitle',x,y)

把對話框定位在[x,y],這里x和y是距左邊界和上邊界的距離,以像素為單位。[fname,pname]=uigetfile(...)

返回在對話框中選擇的文件的名稱和路徑。fname保存被選中的文件的名稱,pname保存路徑。(12)打開文件對話框uigetfile例

列出選定目錄中的所有.m文件[fname,pname]=uigetfile('C:\DocumentsandSettings\yfzx\MyDocuments\MATLAB\*.m','SampleDialogBox')fname=example5_24.mpname=C:\DocumentsandSettings\yfzx\MyDocuments\MATLAB\例列出選定目錄中的所有.m文件fname=pname(13)保存文件對話框uiputfileuiputfile

顯示一個中寫入文件名的對話框,列出了當前目前中的文件和目錄。uiputfile('InitFile')

顯示的對話框包含當前路徑中由InitFile確定的文件的列表。InitFile可以是一個文件的全名,也可以包含通配符*。uiputfile('InitFile','DialogTitle')uiputfile('InitFile','DialogTitle',x,y)

把對話框定位在[x,y],這里x和y是距左邊界和上邊界的距離,以像素為單位。[fname,pname]=uiputfile(...)

返回在對話框中選擇的文件的名稱和路徑。fname保存被選中的文件的名稱,pname保存路徑。

(13)保存文件對話框uiputfile例顯示一個標題為'SaveFilename',文件名為aaa.m的對話框。[fname,pname]=uiputfile('aaa.m','SaveFilename')fname=aaa.mpname=C:\DocumentsandSettings\yfzx\桌面\例顯示一個標題為'SaveFilename',文件名(14)彈出式菜單函數menu

K=MENU(HEADER,ITEM1,ITEM2,...)

例:K=menu('請選擇','plot','mesh','surf')(14)彈出式菜單函數menu二、圖形界面設計是指由窗口、菜單、對話框等各種圖形元素組成的用戶界面。在MATLAB中,基本的圖形界面對象包含3類:用戶界面控件對象(uicontrol)下拉式菜單對象(uimenu)快捷菜單對象(uicontextmenu)二、圖形界面設計1建立用戶菜單

要建立用戶菜單可用uimenu函數,因其調用方法不同,該函數可以用于建立一級菜單項和子菜單項。建立一級菜單項的函數調用格式為:一級菜單項句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,...)建立子菜單項的函數調用格式為:子菜單項句柄=uimenu(一級菜單項句柄,屬性名1,屬性值1,屬性名2,屬性值2,...)1建立用戶菜單要建立用戶菜單可用uimenu函數兩種調用格式的區別建立一級菜單項時,要給出圖形窗口句柄。否則,在當前窗口中建立菜單項。如果沒有活動窗口,則會自動打開一個圖形窗口;建立子菜單項時,必須指定一級菜單項對應的句柄值。菜單項的句柄子菜單項Save的句柄子菜單項SaveAs的句柄例:

hm=uimenu(gcf,'Label','File');hm1=uimenu(hm,'Label','Save')hm2=uimenu(hm,'Label','SaveAs')兩種調用格式的區別建立一級菜單項時,要給出圖形窗口句柄。否則例建立用戶菜單項h=figure('Name','圖形界面窗口','NumberTitle','off','MenuBar','none')hm=uimenu(h,'Label','文件');hm1=uimenu(hm,'Label','保存')hm2=uimenu(hm,'Label','另存為')hm3=uimenu(hm,'Label','退出')例建立用戶菜單項h=figure('Name','圖形界菜單對象常用屬性

菜單對象具有Children,Parent,Tag,UserData,Visible等公共屬性,除公共屬性外,還有一些常用的特殊屬性,見下表所示:%hm3=uimenu(hm,'Label','退出','

callback','

close'

)hm3=uimenu(hm,'Label','&Quit','Accelerator','Q','callback','close','Separator','on')快捷鍵設置菜單對象常用屬性菜單對象具有Children,Pare屬性名屬性值及作用Label取值'字符串',用于定義菜單項的名字.可以在字符串中加(&)對應于下劃線,可用Alt激活Accelerator取值任何字母,用于定義菜單的快捷鍵Callback取值字符串,可以是某個M文件的文件名或一組Matlab命令.該菜單被選中后,自動調用此回調函數.Checked取值'on'或'off',為菜單項定義一個標記,指明菜單項是否被選中Enable取值'on'或'off',控制菜單項的可選擇性.不可用時,該菜單呈現灰色.Position定義一級菜單在菜單欄上的相對位置或子菜單項在菜單組內的相對位置.默認為1最左端Separator取值為'on'或'off'.可以用分隔線將將各菜單項分開.屬性名屬性值及作用Label取值'字符串',用于定義菜單項的例建立圖形演示系統菜單,菜單條中含有3個菜單項:Plot、Option和Quit。

Plot中有SineWave和CosineWave兩個子菜單項,分別控制在本圖形窗口畫出正弦和余弦曲線。

Option菜單項的內容,其中Gridon和Gridoff控制給坐標軸加網格線,Boxon和Boxoff控制給坐標軸加邊框,而且這4項只有在畫有曲線時才是可選的。WindowColor控制圖形窗口背景顏色。Quit控制是否退出系統。例建立圖形演示系統菜單,菜單條中含有3個菜單項:Plo分析其步驟:Step1:按要求建立圖形窗口;Step2:按要求建立第一個菜單項;Step3:按要求建立其子菜單項;Step4:按要求實現對應菜單項和子菜單項功能;Step5:對第二個菜單項,重復step2step4;Step6:結束分析其步驟:screen=get(0,'ScreenSize');w=screen(3);h=screen(4);h=figure('Position',[0.3*h,0.3*h,0.5*w,0.5*h],'Name','圖形演示系統','NumberTitle','off','MenuBar','none');hplot=uimenu(h,'Label','&Plot');hplot1=uimenu(hplot,'Label','SineWave','callback','mysin');hplot2=uimenu(hplot,'Label','CosinWave','callback','mycos');screen=get(0,'ScreenSize');hOption=uimenu(h,'Label','&Option');hGridon=uimenu(hOption,'Label','&Gridon','Callback','Gridon','Enable','on');hGridoff=uimenu(hOption,'Label','G&ridoff','Callback','Gridoff','Enable','on');hBoxon=uimenu(hOption,'Label','&Boxon','Callback','boxon','Enable','on','separator','on');hBoxoff=uimenu(hOption,'Label','B&oxoff','Callback','boxoff','Enable','on');hOption=uimenu(h,'Label','&OphWincolor=uimenu(hOption,'Label','&WindowColor','separator','on');hRed=uimenu(hWincolor,'Label','&Red','Accelerator','r','call','set(h,''color'',''r'');');hBule=uimenu(hWincolor,'Label','&Blue','Accelerator','b','call','set(h,''color'',''b'');');hYellow=uimenu(hWincolor,'Label','&Yellow','call','set(h,''color'',''y'');');hBule=uimenu(hWincolor,'Label','&White','call','set(h,''color'',''w'');');hquit=uimenu(h,'Label','&Quit','call','close(h)');hWincolor=uimenu(hOption,'Labe%mysint=-pi:pi/10:pi;plot(t,sin(t))gridon%mycost=-pi:pi/10:pi;plot(t,cos(t))gridon%mysin2快捷菜單

快捷菜單是用鼠標右鍵單擊某對象時在屏幕上彈出的菜單。這種菜單出現的位置是不固定的,而且總是和某個圖形對象相聯系。在MATLAB中,可以使用Uicontextmenu函數和圖形對象的UicontextMenu屬性來建立快捷菜單,具體步驟為:

(1)利用uicontextmenu函數建立快捷菜單。

(2)利用uimenu函數為快捷菜單建立菜單項。

(3)利用set函數將該快捷菜單和某圖形對象聯系起來。2快捷菜單快捷菜單是用鼠標右鍵單擊某對象時在屏幕上例繪制曲線y=2sin(5x)sinx,并建立一個與之相聯系的快捷菜單,用以控制曲線的線型、曲線寬度和顏色。例繪制曲線y=2sin(5x)sinx,并建立一個與之相x=0:pi/100:2*pi;y=2*sin(5*x).*sin(x);h=plot(x,y);hc=uicontextmenu;hls=uimenu(hc,'Label','線型');hlw=uimenu(hc,'Label','線寬');hlc=uimenu(hc,'Label','線色');uimenu(hls,'Label','虛線','call','set(h,''LineStyle'','':'');');uimenu(hls,'Label','實線','call','set(h,''LineStyle'',''-'');');uimenu(hlw,'Label','加寬','call','set(h,''LineWidth'',2);');uimenu(hlw,'Label','變細','call','set(h,''LineWidth'',0.5);');uimenu(hlc,'Label','紅色','call','set(h,''Color'',''r'');');uimenu(hlc,'Label','綠色','call','set(h,''Color'',''g'');');uimenu(hlc,'Label','黃色','call','set(h,''Color'',''y'');');set(h,'UicontextMenu',hc);建立快捷菜單建立菜單項建立子菜單項并實現功能將快捷菜單和曲線關聯x=0:pi/100:2*pi;建立快捷菜單建立菜單項建立子3對話框設計

對話框是人機交互信息的臨時窗口,有廣泛的用途。目的是使得用戶操作更加方便靈活。3對話框設計對話框是人機交互信息的臨時窗口,有對話框的控件

設計對話框時,有很多控件,能實現各種各樣的功能。常用的控件有控件名PropertyName

功能按鈕PushButton最常用的控件,用于響應用戶的鼠標單擊,按鈕上有說明文字說明其作用。切換按鈕ToggleButton當單擊時會凹凸狀態切換。單選按鈕RadioButton當單擊時會用黑白點切換,總是成組出現,多個單選按鈕互斥,一組中只有一個被選中。復選框CheckBox當單擊時會用√切換,有選中、不選中和不確定等狀態,總是成組出現,多個復選框可同時選用。對話框的控件設計對話框時,有很多控件,能實現各種各樣控件名PropertyName功能文本框EditText凹形方框,可隨意輸入和編輯單行和多行文字,并顯示出來。靜態文本框StaticText用于顯示文字信息,但不接受輸入。滾動條Slider可以用圖示的方式顯示在一個范圍內數值的大概值范圍,用戶可以移動滾動條改變數值。邊框Frame將一組控件圍在框架中,用于裝飾界面。列表框ListBox顯示下拉文字列表,用戶可以從列表中選擇一項和多項。彈出框PopupMenu相當于文本框和列表框的組合,用戶可以從下拉列表中選擇。控件名Property功能文本框EditText凹形方框,可對話框的設計

在MATLAB中,要設計一個對話框,首先要建立一個圖形窗口,然后在圖形窗口中放置所涉及到的用戶控件對象。(1)建立控件對象命令uicontrolh_control=uicontrol(h_Parent,'PropertyName',ProperValue,...)(2)控件對象的屬性對話框控件對象除了Children、Parent、Visible、UserData等公共屬性外,還有一些常用的特殊屬性。對話框的設計在MATLAB中,要設計一個對話框,首先屬性名屬性值Position[x,y,w,h],它們的單位Units屬性決定Unitspixel、normalized、inches、centiments、pointsCallback取值為字符串,實現該控件的實質性功能String取值為字符串,定義控件對象的說明文字Style取值可以是push、toggle、radio、check、list、popup、edit、text、slider等。定義控件對象的類型。Enable該控件的使能狀態‘on’或‘off’Tooltipstring鼠標指針位于該控件時的提示信息顯示FontName取值是控件對象標題等使用字體的字庫名屬性名屬性值Position[x,y,w,h],它們的單位UFontSize字號大小FontAngle取值為normalized、italic、obliqueFontUnitsPoints、normalized、inches、centiments、Pixel、FontWeightnormalized、light、demi、boldHorizontal-AlignmentLeft、center、right.決定控件對象上說明文字在水平方向上對齊方式Max和Min取值為數值,默認值為1、0Value屬性的取值,可以是向量也可以是數值。說明:對于不同的控件對象(radio,check,slider,listpopup),其Max、Min以及Value值的含義有所不同。FontSize字號大小FontAngle取值為normal例:h_main=figure('name','ademoofguidesign','menubar','none',...'numbertitle','off','position',[100100300100]);h_edit=uicontrol('style','edit','backgroundcolor',[111],'position',[20205020],...'tag','myedit','string','1','horizontalalignment','left');h_but1=uicontrol('style','pushbutton','position',[20505020],'string','INC',...'callback',['v=eval(get(h_edit,''string''));',...'set(h_edit,''string'',int2str(v+1));']);h_but2=uicontrol('style','pushbutton','position',[80505020],'string','DEC',...'callback',['v=eval(get(h_edit,''string''));','set(h_edit,''string'',int2str(v-1));']);例:h_main=figure('name','ademo例2functiongui_demo()%GUI_demoisanotherdemoofGUIdesign.h_main=figure('units','normalized','position',[0.4],...'name','GUIdemostration','numbertitle','off');h_axis=axes('units','normalized','position',[0.7],...'tag','axplot','xlim',[010],'ylim',[-11]);t=0:0.1:10;y=sin(t);line(t,y);bmp1=imread('1.bmp');bmp2=imread('2.bmp');bmp3=imread('3.bmp');bmp4=imread('4.bmp');h_1=uicontrol('style','pushbutton','units','normalized',...'position',[60.1],'cdata',bmp1,...'callback','zoomon','tooltipstring','Enablezooming');h_2=uicontrol('style','pushbutton','units','normalized',...'position',[0.040.450.060.1],'cdata',bmp2,...'callback','zoomxon','tooltipstring','Enablezoomonx-axisonly');h_3=uicontrol('style','pushbutton','units','normalized',...'position',[0.160.450.060.1],'cdata',bmp3,...'callback','zoomyon','tooltipstring','Enablezoomony-axisonly');h_4=uicontrol('style','pushbutton','units','normalized',...'position',[60.1],'cdata',bmp4,...'callback','zoomoff','tooltipstring','Disablezooming');例2functiongui_demo()matlab圖形界面編程課件對話框設計例題例

建立按鈕對象,單擊時繪制正弦函數,同時建立雙位按鈕,控制是否給坐標加網格線。代碼:uicontrol(gcf,'Style','push','Position',[40,5,100,25],...'String','Plot','call','x=0:pi/100:2*pi;plot(x,sin(x))')uicontrol(gcf,'Style','toggle','Position',[170,5,100,25],'String','Grid','call','grid')對話框設計例題例建立按鈕對象,單擊時繪制正弦函數,同時建例

建立單選按鈕,用來設置圖形窗口的顏色,只能選擇一種顏色。代碼:htxt=uicontrol(gcf,'Style','text','Position',[200,130,150,20],'String','ColorOptions')hr=uicontrol(gcf,'Style','radio','Position',[200,100,150,25],'String','red','Value',1,'call',['set(hr,''Value'',1);','set(hb,''Value'',0);','set(hy,''Value'',0);','set(gcf,''Color'',''r'')']');hb=uicontrol(gcf,'Style','radio','Position',[200,75,150,25],'String','blue','Value',1,'call',['set(hb,''Value'',1);','set(hr,''Value'',0);','set(hy,''Value'',0);','set(gcf,''Color'',''b'')']');hy=uicontrol(gcf,'Style','radio','Position',[200,50,150,25],'String','yellow','Value',1,'call',['set(hb,''Value'',0);','set(hr,''Value'',0);','set(hy,''Value'',1);','set(gcf,''Color'',''y'')']');he=uicontrol(gcf,'Style','push','String','Quit','call','close');例建立單選按鈕,用來設置圖形窗口的顏色,只能選擇一種顏色例建立復選框按鈕,用來設置圖形窗口的顏色、標題、大小等。例建立復選框按鈕,用來設置圖形窗口的顏色、標題、大小等。htxt=uicontrol(gcf,'style','text','Units',...'normalized','Position',[.],'String',...'SetWindowsProperties');hp=uicontrol(gcf,'Style','check','Units','normalized',...'Position',[.],'String','MyPosition',...'call',['set(gcf,''Position'',[300,300,300,250]);',...'ifget(hp,''Value'')==1,',...'set(gcf,''Position'',[300,200,600,500]),','end']);hc=uicontrol(gcf,'Style','check','Units','normalized',...'Position',[.],'String','MyColor',...'call',['set(gcf,''Color'',''g'');',...'ifget(hc,''Value'')==1,','set(gcf,''Color'',''r''),','end']);htxt=uicontrol(gcf,'style','tehn=uicontrol(gcf,'Style','check','Units','normalized','Position',[.],'String','MyName',...'call',['set(gcf,''Name'',''復選框未被選中'');',...'ifget(hn,''Value'')==1,',...'set(gcf,''Name'',''復選框被選中''),','end']);hn=uicontrol(gcf,'Style','chec例建立下拉列表,列表中包含一組圖形形狀.當選擇某種形狀時,要求在圖形窗口中畫出.ScreenColor=get(gcf,'Color');htext=uicontrol(gcf,'Style','text',...

'String','Pleaseselectoneofshapes',...

'Position',[80,360,200,20],...

'Fontsize',12,'ForegroundColor','b',...

'BackgroundColor',...

[ScreenColor(1),ScreenColor(2),ScreenColor(3)]);hlist=uicontrol(gcf,'Style','list',...'String','line|triangle|square|rectangle|diamond',...'call','Mydraw(hlist)','Position',...[100,200,100,150],'Fontsize',12,'BackgroundColor','w');例建立下拉列表,列表中包含一組圖形形狀.當選擇某種形狀時matlab圖形界面編程課件例建立兩個滾動條,分別用于設置圖形窗口的寬度和高度,并利用靜態文本說明對象,標出滾動條的數據范圍以及當前值.例建立兩個滾動條,分別用于設置圖形窗口的寬度和高度,并利用screen=get(0,'ScreenSize');w=screen(3);h=screen(4);hfigure=figure('Position',[0.35*h,0.3*h,0.4*w,0.25*h],'Name','滑動條演示窗口','NumberTitle','off','MenuBar','none');圖形窗口hslider1=uicontrol(hfigure,'Style','Slider','Position',[50,50,120,20],'Min',200,'Max',800,'Value',400,'callback',['set(azmcur,''String'',num2str(get(hslider1,''Value'')));','set(hfigure,''Position'',[0.35*h,0.3*h,get(hslider1,''Value''),get(hslider2,''Value'')]);']);第一個滑動條screen=get(0,'ScreenSize');圖形窗hslider2=uicontrol(hfigure,'Style','Slider','Position',[240,50,120,20],'Min',100,'Max',600,'Value',300,'callback',['set(elvcur,''String'',num2str(get(hslider2,''Value'')));',...'set(hfigure,''Position'',[0.35*h,0.3*h,get(hslider1,''Value''),get(hslider2,''Value'')]);']);第二個滑動條azmmin=uicontrol(hfigure,'Style','text','Position',[20,46,30,20],'String',num2str(get(hslider1,'Min')));elvmmin=uicontrol(hfigure,'Style','text','Position',[210,46,30,20],'String',num2str(get(hslider2,'Min')));用靜態文本標出最小值hslider2=uicontrol(hfigure,'Stazmmax=uicontrol(hfigure,'Style','text','Position',[170,46,30,20],'String',num2str(get(hslider1,'max')));elvmmax=uicontrol(hfigure,'Style','text','Position',[360,46,30,20],'String',num2str(get(hslider2,'max')));用靜態文本標出最大值azmLabel=uicontrol(hfigure,'Style','text','Position',[50,80,65,20],'String','Width');elvLabel=uicontrol(hfigure,'Style','text','Position',[240,80,65,20],'String','Height');azmcur=uicontrol(hfigure,'Style','text','Position',[120,80,65,20],'String',num2str(get(hslider1,'Value')));elvcur=uicontrol(hfigure,'Style','text','Position',[240,80,65,20],'String',num2str(get(hslider2,'Value')));用靜態文本標出當前設置的寬度和高度azmmax=uicontrol(hfigure,'Styl例建立圖形演示對話框.在文本框輸入”繪圖”按鈕時,能在左邊坐標軸繪制所對應的圖形,下拉列表框提供色圖控制,列表框提供坐標軸網格線和坐標軸邊框控制.str=['t=-pi:pi/10:2*pi;','r=2+sin(t);','[x,y,z]=cylinder(r,30);','surf(x,y,z)'];figure('Name','圖形演示','Color',[],'units','normalized','Position',[.],'NumberTitle','off','Menubar','none');haxes=axes('Position',[.0]);例建立圖形演示對話框.在文本框輸入”繪圖”按鈕時,能在左htext=uicontrol(gcf,'Style','text','units','normalized','Position',[.],'String','輸入繪圖命令','FontSize',11,'Horizontal','center','back',[.8.8.8]);hedit=uicontrol(gcf,'Style','edit','units','normalized','Position',[.8],'Max',2,'back','w','String',str);hpopup=uicontrol(gcf,'Style','popup','units','normalized','Position',[.5],'String','Spring|Summer|Autumn|Winter','call','COMM(hedit,hpopup,hlist)','back','w');hlist=uicontrol(gcf,'Style','list','units','normalized','Position',[.5],'String','Gridon|Gridoff|Boxon|Boxoff','call','COMM(hedit,hpopup,hlist)','back','w');htext=uicontrol(gcf,'Style','thpushDraw=uicontrol(gcf,'Style','push','units','normalized','Position',[.5],'String','Draw',

'call','COMM(hedit,hpopup,hlist)','back',[.8.8.8]);hpushClose=uicontrol(gcf,'Style','push','units','normalized','Position',[.5],'String','Quit',

'call','close(gcf)','back',[.8.8.8]);hpushDraw=uicontrol(gcf,'StylefunctionCOMM(hedit,hpopup,hlist)com=get(hedit,'String')if~isempty(com)eval(com)n1=get(hpopup,'Value');n2=get(hlist,'Value');chpop={'spring','summer','autumn','winter'};chlist={'Gridon','Gridoff','Boxon','Boxoff'};colormap(eval(chpop{n1}));eval(chlist{n2});endfunctionCOMM(hedit,hpopup,hli三、可視化圖形用戶界面設計MATLAB提供了可視化的圖形界面開發環境.實現了”所見即所得”.GUI設計模板打開:FileNewGUI模板:四種模板BlankGUI(默認)GUIwithUicontrols(帶控件對象的GUI模板)GUIwithAxesandMenu(帶坐標軸與菜單的GUI模板)ModalQuestionDialog(帶模式問話對話框的GUI模板)三、可視化圖形用戶界面設計MATLAB提供了可視化的圖形GUI設計窗口控件工具欄工具欄菜單欄圖形對象設計區GUI設計窗口控件工具欄工具欄菜單欄圖形對象設計區GUI設計的基本操作控件屬性GUI設計的基本操作控件屬性為了添加控件,可以從GUI設計窗口的控件工具欄中選擇一個對象,然后以拖曳方式在對象設計區建立該對象,其對象創建方式方便、簡單。在GUI設計窗口創建對象后,通過雙擊該對象,就會顯示該對象的屬性查看器,通過它可以設置該對象的屬性值。在選中對象的前提下,單擊鼠標右鍵,會彈出一個快捷菜單,可以從中選擇某個子菜單進行相應的操作。在對象設計區右擊鼠標,會顯示與圖形窗口有關的快捷菜單。為了添加控件,可以從GUI設計窗口的控件工具欄中選擇一個對象MATLAB的用戶界面設計工具有:(1)對象屬性查看器(PropertyInspector):可查看每個對象的屬性值,也可修改設置對象的屬性值。(2)對象瀏覽器(ObjectBrowser):可觀察當前設計階段的各個句柄圖形對象。(3)菜單編輯器(MenuEditor):創建、設計、修改下拉式菜單和快捷菜單。(4)位置調整工具(AlignmentTool):可利用該工具左右、上下對多個對象的位置進行調整。(5)Tab順序編輯器(TabOrderEditor):通過該工具,設置當按下鍵盤上的Tab鍵時,對象被選中的先后順序。

MATLAB的用戶界面設計工具有:回調函數(callbackfunction)CloseRequestFcn-關閉窗口時響應函數KeyPressFcn-鍵盤按下時響應函數windowButtonDownFcn-鼠標按下時響應函數WindowButtonMotionFcn-鼠標移動時響應函數CreateFcn和DeleteFcn-建立和刪除對象時響應函數CallBack-對象被選中時響應函數回調函數(callbackfunction)CloseRe例:示意小球碰撞過程出射角上擋板下擋板例:示意小球碰撞過程出射角上擋板下擋板在OpeningFcn中加入初始化語句h1=line([0,1],-0.09*[11]);set(h1,'linewidth',5);h2=line([0,1],1.09*[11]);set(h2,'linewidth',7);uu={[100],0.050.5};set(gcf,'userdata',uu);Tag=lstcolorTag=rdradio1Tag=rdradio2Tag=rdradio3在OpeningFcn中加入初始化語句Tag=lstcofunctionexec_bouncing(x)k=1;uu=get(gcf,'userdata');ifnargin==0,[x,y,k]=ginput(1);uu{3}=x;set(gcf,'userdata',uu);endifk==1ifx<0,x=0.1;endifx>1,x=1;endxx=[0];yy=[1];x0=0;x1=x;y1=1;while(x1<=1+x)xx=[xxx1];y1=~y1;yy=[yyy1];x0=x1;x1=x1+x;enddx=1/50;xx_l=[0:dx:1,xx];xx_l=sort(xx_l);yy_l=interp1(xx,yy,xx_l);h_mark=line([0],[1]);set(h_mark,'Marker','o','markersize',8,'color',‘r',...'tag','h_ball','linewidth',5);set(h_mark,'color',uu{1});fori=1:length(xx_l)x0=xx_l(i);y0=yy_l(i);set(h_mark,'xdata',x0,'ydata',...y0);pause(uu{2});endendfunctionexec_bouncing(x)set(hfunctionset_speed(key)uu=get(gcf,'userdata');switchkeycase1uu{2}=uu{2}*0.5;case2uu{2}=uu{2}*2;case3uu{2}=0.05;case4kk=get(findobj(gcf,'tag','lstcolor'),'value');switchkkcase1uu{1}=[100];case2uu{1}=[010];case3uu{1}=[001];endendifkey<=3hh=gco;h1=findobj(gcf,'tag','rdradio1');set(h1,'value',0);h2=findobj(gcf,'tag','rdradio2');set(h2,'value',0);h3=findobj(gcf,'tag','rdradio3');set(h3,'value',0);set(hh,'value',1);endset(gcf,'userdata',uu);exec_bouncing(uu{3});

functionset_speed(key)ifkey<作業5.2:

建立”數制轉換”對話框,在左邊輸入一個十進制整數和2—16之間的數,單擊“轉換”按鈕能在右邊得到與十進制相對應的相應進制的字符串,單擊“退出”按鈕退出對話框。例如:輸入 20和13得到17 12和13得到C 13和13得到10作業5.2:第九章圖形界面編程

(GraphicalUserInterface,GUI)第九章圖形界面編程一、常用對話框的設計

二、圖形界面設計

三、可視化圖形用戶界面設計一、常用對話框的設計

二、圖形界面設計

三、可視化圖形用一、常用對話框的設計(1)創建對話框dialogh=dialog('PropertyName',ProperValue,...)

返回一個對話框句柄。該函數產生一個圖形對象并為對話框設置推薦的圖形屬性。Note:該函數的屬性是圖形Figure的屬性Example:h=dialog('Name','圖形對話框','Position',...[240,240,200,50],'Color','r')一、常用對話框的設計(1)創建對話框dialogExamp(2)創建輸入對話框inputdlganswer=inputdlg(prompt)answer=inputdlg(prompt,title)answer=inputdlg(prompt,title,lineNo)answer=inputdlg(prompt,title,lineNo,defAns)answer=inputdlg(prompt,title,lineNo,defAns,Resize)對應描述:prompt是一個包含提示字符串的數組。創建一個模式對話框并返回用戶在數組中輸入的內容title為對話框指定一個標題lineNo為用戶的每個輸入值指定輸入的行數,可以是標量、列向量或矩陣。列向量為一個提示符指定輸入的行數;矩陣是m*2矩陣,其中m是對話框中提示符的個數,矩陣的第一列為指定輸入的行數;第二列指定字符的域寬。defAns指定每個提示符的默認值Resize說明對話框是否改變尺寸,取值'on'和'off'。(2)創建輸入對話框inputdlg對應描述:prompt是

例ans=inputdlg('請輸入題號(1-10),輸入0退出','Matlabzuoye')例pp={'a=?','b=?'}ans=inputdlg(pp,'InputParam')matlab圖形界面編程課件例inputdlg('AAAAAAA')inputdlg('AAAAAAA','inputdialog')inputdlg('AAAAAAA','inputdialog',2)inputdlg('AAAAAAA','inputdialog',1,{'OOOOOOOO'})inputdlg('AAAAAAA','inputdialog',1,{'OOOOOOOO'},'on')Cellarray例創建輸入一個整數和色圖名稱的對話框,每行只允許輸入一行。prompt={'EnterMatrixsize','Entercolomapname'};title='Inputdataforpeaksfunction';lines=1;def={'20','hsv'};answer=inputdlg(prompt,title,lines,def)例Cellarray例創建輸入一個整數和色圖名稱的對話(3)創建消息對話框msgboxmsgbox(message)msgbox(message,title)msgbox(message,title,'icon')msgbox(message,title,'custom',iconData,iconCmap)msgbox(...,'createMode')h=msgbox(...)對應描述:產生一個消息對話框title為消息對話框指定標題Icon指定在消息對話框中顯示哪一個圖標.'icon'可以是'none'、'error'、'help'、'warn'、'custom'定義一個用戶定制的圖標。iconData包含著定義圖標的圖形數據;iconCmap是圖形所用的色圖指定消息框是否為模式化的,如果是非模式化的,是否要取代其它有同樣標題的消息框。''createMode'取'modal'、'non-modal'和'replace'返回一個對話框的句柄h,它是一個圖形對象的句柄。(3)創建消息對話框msgboxNote:消息對話中的消息自動換行來適應具有適當尺寸的圖框。Message是一個字符串向量、字符串矩陣或數組。例

mess={'Inputdlghelp','Listdlghelp';'Msgboxhelp',...'Pagedlghelp'}msgbox(mess,'MyDialogHelp','help')mess='Inputdlghelp''Listdlghelp''Msgboxhelp''Pagedlghelp'Note:消息對話中的消息自動換行來適應具有適當尺寸的圖框。(4)創建錯誤對話框errordlgerrord

溫馨提示

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

評論

0/150

提交評論