版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五講圖形用戶界面編程第一頁,共三十六頁,2022年,8月28日MATLAB圖形界面中各對(duì)象關(guān)系根對(duì)象root圖形窗口對(duì)象figure右鍵菜單對(duì)象uicontextmenu菜單對(duì)象uimenu控件對(duì)象uicontrol坐標(biāo)軸對(duì)象axes線對(duì)象line文字對(duì)象text表面圖對(duì)象surface圖像對(duì)象image光源對(duì)象light第二頁,共三十六頁,2022年,8月28日窗口對(duì)象及其屬性設(shè)定窗口對(duì)象的建立
hwin=figure(屬性1,屬性值1,屬性2,屬性值2,…)hwin為圖形窗口的句柄,matlab環(huán)境允許打開多個(gè)窗口,每個(gè)窗口都對(duì)應(yīng)自己的句柄,通過該句柄可以進(jìn)一步對(duì)窗口的屬性等進(jìn)行操作。
hwin=gcf
獲得當(dāng)前窗口的句柄。第三頁,共三十六頁,2022年,8月28日?qǐng)D形窗口的屬性第四頁,共三十六頁,2022年,8月28日常用屬性
color屬性由紅綠藍(lán)三原色組成,取值范圍為0到1。
menubar屬性設(shè)置菜單條的形式。
name屬性設(shè)置圖形窗口的標(biāo)題欄中標(biāo)題內(nèi)容,其屬性值為一字符串。
numbertitle屬性是否顯示圖形窗口標(biāo)題欄中的圖形標(biāo)號(hào)。
units屬性設(shè)定圖形單位。如:pixels(象素點(diǎn))、inches(英寸)、centimeters(厘米)、normalized(歸一值)等第五頁,共三十六頁,2022年,8月28日position屬性設(shè)定窗口的位置和大小,為1×4向量,前兩個(gè)值為窗口左下角橫縱坐標(biāo)值,后兩個(gè)元素值為窗口的寬度和高度,其單位由units屬性設(shè)定。
resize屬性確定是否可以改變圖形窗口的大小。
toolbar屬性是否顯示工具條。
visible屬性決定窗口是否為可見。
Pointer屬性設(shè)置鼠標(biāo)的顯示形式。
第六頁,共三十六頁,2022年,8月28日對(duì)象屬性的修改改變對(duì)象的屬性值
set(對(duì)象句柄,屬性1,屬性值1,屬性2,屬性值2,…)
屬性的名稱用單引號(hào)括起來;如果不給出屬性值,則返回全部允許的屬性值。獲得對(duì)象的屬性值
V=get(句柄名,屬性)?gwin=figure('visible','off');?set(gwin,'color',[1,0,0],'position',[100,200,300,300],...'name','Myprogram','numbertitle','off','menubar','none');?set(gwin,'visible','on')第七頁,共三十六頁,2022年,8月28日回調(diào)函數(shù)(callbackfunction)CloseRequestFcn-關(guān)閉窗口時(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ù)CreateFcn和DeleteFcn-建立和刪除對(duì)象時(shí)響應(yīng)函數(shù)CallBack-對(duì)象被選中時(shí)響應(yīng)函數(shù)第八頁,共三十六頁,2022年,8月28日?gwin=figuregwin=1?set(gwin,'windowbuttondownfcn','helpdlg(''mousebuttondown!'')')?set(gwin,'keypressfcn','helpdlg(''keyboardpressed!'')')
一旦該對(duì)象指定的事件發(fā)生,將自動(dòng)調(diào)用某指定的函數(shù),它可以是matlab文件,也可以是一組matlab程序。第九頁,共三十六頁,2022年,8月28日標(biāo)準(zhǔn)對(duì)話框及其調(diào)用文件名操作函數(shù)
uigetfile()和uiputfile()函數(shù)打開一個(gè)文件進(jìn)行讀、寫的對(duì)話框。
[fname,pname]=uigetfile(ffilter,strtitle,x,y)ffilter為文件名過濾器;strtiltle為對(duì)話框窗口標(biāo)題欄的顯示內(nèi)容;x、y為對(duì)話框出現(xiàn)的位置,省略則采用默認(rèn)位置。第十頁,共三十六頁,2022年,8月28日?[f,p]=uigetfile('*.m;*.txt','請(qǐng)選擇一個(gè)文件')f=fileprint.mp=E:\MATLABR11\work\第十一頁,共三十六頁,2022年,8月28日顏色設(shè)置對(duì)話框
c=uisetcolor;或c=uisetcolor(c0);
函數(shù)返回一個(gè)1×3的顏色向量,分別對(duì)應(yīng)紅、綠、藍(lán)三原色,按下“取消”按鈕后返回空的向量;如果給出向量c0,則在圖中指向c0所定義的顏色位置,且按下“取消”按鈕時(shí)返回c0的值。第十二頁,共三十六頁,2022年,8月28日字體設(shè)置對(duì)話框
h_Font=uisetfont或h_Font=uisetfont(h_Text,strTitle)h_Font為字體屬性的結(jié)構(gòu)體;h_Text為要設(shè)置的字符句柄,strTitle為對(duì)話框的標(biāo)題欄內(nèi)容。?s=uisetfonts=FontName:'楷體_GB2312'FontUnits:'points'FontSize:42FontWeight:'bold'FontAngle:'normal'第十三頁,共三十六頁,2022年,8月28日警告與錯(cuò)誤信息對(duì)話框
warndlg和errordlg函數(shù)二者的顯示圖標(biāo)不同。例:?h=warndlg({‘error:’,‘code1111.’},‘Warning’)
?h=errordlg({'error:','code1111.'},'Error')
第十四頁,共三十六頁,2022年,8月28日幫助信息對(duì)話框與警告、錯(cuò)誤信息對(duì)話框基本一致,僅僅是圖標(biāo)的不同。例:
?h=helpdlg({'幫助信息:','幫助信息對(duì)話框和警告錯(cuò)誤對(duì)話框基本一致,只是圖標(biāo)不同!'},'幫助')第十五頁,共三十六頁,2022年,8月28日通用信息框
msgbox(‘顯示信息’,’標(biāo)題’,’圖標(biāo)’)
圖標(biāo)包括:Error、Help、Warn以及Custom,如果缺省則為None。
?data=1:64;data=(data'*data)/64;?msgbox('Thisisanexampleofmsgbox!','customico','custom',data,hot(64))第十六頁,共三十六頁,2022年,8月28日Matlab圖形界面基本控件靜態(tài)文本’text’
一般用來作為信息提示用。編輯框’edit’
讀取用戶數(shù)據(jù)的文字窗口??蚣堋甪rame’
概括一組控件,也可以修飾用。列表框‘list’
包含多個(gè)選項(xiàng)供用戶選擇。第十七頁,共三十六頁,2022年,8月28日滾動(dòng)條’slider’
圖示某個(gè)范圍。按鈕’pushbutton’
其上的字符說明其作用。切換按鈕’toggle’
兩狀態(tài)按鈕,單擊改變其狀態(tài)。收音機(jī)按鈕’radio’
一組選項(xiàng),其中只能有一個(gè)被選中。檢取框’check’
一組選項(xiàng),可以選擇多項(xiàng)。彈出式菜單’popup’
選中時(shí)打開一個(gè)列表。第十八頁,共三十六頁,2022年,8月28日控件的常用屬性Units與position屬性意義同上,這里的位置是相對(duì)該窗口的左下角;String屬性標(biāo)注在控件上,用來說明或提示;Callback屬性實(shí)現(xiàn)該控件的實(shí)質(zhì)性功能;Enable屬性該控件的使能狀態(tài)‘on’或‘off’第十九頁,共三十六頁,2022年,8月28日Cdata屬性真彩色位圖,為一三維數(shù)組,用于美化界面;Tooltipstring屬性鼠標(biāo)指針位于該控件時(shí)的提示信息顯示;Interruptable屬性是否中斷當(dāng)前回調(diào)函數(shù)的執(zhí)行,‘on’或‘off’字體屬性設(shè)置字體第二十頁,共三十六頁,2022年,8月28日例1:h_main=figure(‘name’,‘a(chǎn)demoofguidesign’,‘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));']);第二十一頁,共三十六頁,2022年,8月28日functiongui_counter1()%gui_counterisademoofguidesign.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',['h=findobj(gcf,''tag'',''myedit'');','v=eval(get(h,''string''));',...'set(h,''string'',int2str(v+1));']);h_but2=uicontrol('style','pushbutton','position',[80505020],'string','DEC',...'callback',['h=findobj(gcf,''tag'',''myedit'');','v=eval(get(h,''string''));',...'set(h,''string'',int2str(v-1));']);第二十二頁,共三十六頁,2022年,8月28日例2functiongui_demo()%GUI_demoisanotherdemoofGUIdesign.h_main=figure('units','normalized','position',[0.30.30.50.4],...'name','GUIdemostration','numbertitle','off');h_axis=axes('units','normalized','position',[0.30.150.60.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',[0.10.60.060.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',[0.10.30.060.1],'cdata',bmp4,...'callback','zoomoff','tooltipstring','Disablezooming');第二十三頁,共三十六頁,2022年,8月28日第二十四頁,共三十六頁,2022年,8月28日Matlab菜單系統(tǒng)設(shè)計(jì)菜單系統(tǒng)的生成
菜單項(xiàng)句柄=uimenu(窗口句柄,屬性1,屬性值1,屬性2,屬性值2,…)
子菜單句柄=uimenu(菜單項(xiàng)句柄,屬性1,屬性值1,…)
屬性:菜單條名稱label回調(diào)函數(shù)callback第二十五頁,共三十六頁,2022年,8月28日熱鍵名稱accelerator背景顏色backgroundcolor前景顏色foregroundcolor選中狀態(tài)checked使能狀態(tài)enabled菜單條位置position分隔符separator第二十六頁,共三十六頁,2022年,8月28日ctxmenu=uicontextmenu;set(gcf,'uicontextmenu',ctxmenu);uimenu(ctxmenu,'label','zoomon','callback','zoomon');uimenu(ctxmenu,'label','x-axiszoomon','callback','zoomxon');uimenu(ctxmenu,'label','y-axiszoomon','callback','zoomyon');uimenu(ctxmenu,'label','zoomoff','callback','zoomoff');uimenu(ctxmenu,'label','checked','checked','on','separator','on');uimenu(ctxmenu,'label','disabled','enable','off');第二十七頁,共三十六頁,2022年,8月28日GUI設(shè)計(jì)工具簡(jiǎn)介guideGUI向?qū)гO(shè)計(jì)器。第二十八頁,共三十六頁,2022年,8月28日屬性設(shè)計(jì)器(PropertyEditor)設(shè)置所選圖形對(duì)象或GUI控件各屬性的值第二十九頁,共三十六頁,2022年,8月28日控件布局編輯器(AlignmentTool)設(shè)置控件的布局第三十頁,共三十六頁,2022年,8月28日菜單編輯器(MenuEditor)編輯菜單項(xiàng)第三十一頁,共三十六頁,2022年,8月28日回調(diào)函數(shù)編輯器(CallbackEditor)編輯控件屬性所對(duì)應(yīng)的回調(diào)函數(shù)第三十二頁,共三十六頁,2022年,8月28日例:示意小球碰撞過程出射角上擋板下?lián)醢宓谌?,共三十六頁?022年,8月28日h1=line([0,1],-0.09*[11]);set(h1,'linewidth',5);h2=line([0,1],1.09*[11]);set(h2,'linewidth',7);uu={[010],0.050.5};set(h_main,'userdata',uu);Tag=lstcolorTag=rdradio1Tag=rdradio2Tag=rdradio3第三十四頁,共三十六頁,2022年,8月28日functionexec_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([
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 珠海廣東珠海斗門交警大隊(duì)招聘普通雇員9人筆試歷年參考題庫附帶答案詳解
- 河源2025年廣東河源東源縣衛(wèi)生健康局招聘醫(yī)療衛(wèi)生急需緊缺人才筆試歷年參考題庫附帶答案詳解
- 柳州2025年廣西柳州市公安機(jī)關(guān)招聘輔警74人筆試歷年參考題庫附帶答案詳解
- 巴中2025年四川巴中市恩陽區(qū)招聘衛(wèi)生專業(yè)技術(shù)人員47人筆試歷年參考題庫附帶答案詳解
- 寧波浙江寧波余姚市生態(tài)文明促進(jìn)中心(余姚市水環(huán)境治理中心)招聘筆試歷年參考題庫附帶答案詳解
- 哈爾濱2025年黑龍江哈爾濱新區(qū)新質(zhì)生產(chǎn)力促進(jìn)中心選調(diào)23人筆試歷年參考題庫附帶答案詳解
- 南陽2025年河南南陽市鎮(zhèn)平縣選調(diào)城區(qū)學(xué)校教師225人筆試歷年參考題庫附帶答案詳解
- 南京2025年江蘇南京市梅山第一小學(xué)招聘教師筆試歷年參考題庫附帶答案詳解
- 保定2025年河北保定易縣事業(yè)單位招聘160人筆試歷年參考題庫附帶答案詳解
- 上饒2025年江西上饒市婺源縣城區(qū)部分學(xué)校遴選教師60人筆試歷年參考題庫附帶答案詳解
- 西北區(qū)域電力并網(wǎng)運(yùn)行管理實(shí)施細(xì)則
- 金礦詳查報(bào)告
- 2023年4月山東省考公務(wù)員無領(lǐng)導(dǎo)面試題試卷真題解析10套全
- DZ/T 0150-1995銀礦地質(zhì)詳查規(guī)范
- 雜志分揀打包服務(wù)合同4篇
- 春節(jié)園林綠化安全應(yīng)急預(yù)案
- 2025年舟山市專業(yè)技術(shù)人員公需課程-全面落實(shí)國(guó)家數(shù)字經(jīng)濟(jì)發(fā)展戰(zhàn)略
- 豐田的生產(chǎn)方式培訓(xùn)
- 2023年福建省能源石化集團(tuán)有限責(zé)任公司社會(huì)招聘筆試真題
- 交通安全不坐黑車
- 舞臺(tái)音響燈光工程投標(biāo)書范本
評(píng)論
0/150
提交評(píng)論