《圖形用戶界面編程》PPT課件.ppt
《《圖形用戶界面編程》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《圖形用戶界面編程》PPT課件.ppt(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
MATLAB技術(shù)與應(yīng)用,圖形用戶界面編程,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,,,,,,,,,,,,,,,,窗口對(duì)象及其屬性設(shè)定,窗口對(duì)象的建立 hwin=figure(屬性1,屬性值1,屬性2,屬性值2,…) hwin為圖形窗口的句柄,matlab環(huán)境允許打開(kāi)多個(gè)窗口,每個(gè)窗口都對(duì)應(yīng)自己的句柄,通過(guò)該句柄可以進(jìn)一步對(duì)窗口的屬性等進(jìn)行操作。 hwin=gcf 獲得當(dāng)前窗口的句柄。,,圖形窗口的屬性,常用屬性 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(歸一值)等,position屬性 設(shè)定窗口的位置和大小,為14向量,前兩個(gè)值為窗口左下角橫縱坐標(biāo)值,后兩個(gè)元素值為窗口的寬度和高度,其單位由units屬性設(shè)定。 resize屬性 確定是否可以改變圖形窗口的大小。 toolbar屬性 是否顯示工具條。 visible屬性 決定窗口是否為可見(jiàn)。 Pointer屬性 設(shè)置鼠標(biāo)的顯示形式。,對(duì)象屬性的修改,改變對(duì)象的屬性值 set(對(duì)象句柄,屬性1,屬性值1,屬性2,屬性值2,…) 屬性的名稱(chēng)用單引號(hào)括起來(lái);如果不給出屬性值,則返回全部允許的屬性值。 獲得對(duì)象的屬性值 V=get(句柄名,屬性),?gwin=figure(visible,off); ?set(gwin,color,[1,0,0],position,[100,200,300,300],. name,My program,numbertitle,off,menubar,none); ?set(gwin,visible,on),回調(diào)函數(shù)(callback function),CloseRequestFcn-關(guān)閉窗口時(shí)響應(yīng)函數(shù) KeyPressFcn-鍵盤(pán)按下時(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ù),?gwin=figure gwin = 1 ?set(gwin,windowbuttondownfcn,helpdlg(mouse button down!)) ?set(gwin,keypressfcn,helpdlg(keyboard pressed!)),一旦該對(duì)象指定的事件發(fā)生,將自動(dòng)調(diào)用某指定的函數(shù),它可以是matlab文件,也可以是一組matlab程序。,標(biāo)準(zhǔn)對(duì)話框及其調(diào)用,文件名操作函數(shù) uigetfile()和uiputfile()函數(shù)打開(kāi)一個(gè)文件進(jìn)行讀、寫(xiě)的對(duì)話框。 [fname,pname]=uigetfile(ffilter,strtitle,x,y) ffilter為文件名過(guò)濾器;strtiltle為對(duì)話框窗口標(biāo)題欄的顯示內(nèi)容;x、y為對(duì)話框出現(xiàn)的位置,省略則采用默認(rèn)位置。,?[f,p]=uigetfile(*.m;*.txt,請(qǐng)選擇一個(gè)文件) f = fileprint.m p = E:\MATLABR11\work\,顏色設(shè)置對(duì)話框 c=uisetcolor; 或 c=uisetcolor(c0); 函數(shù)返回一個(gè)13的顏色向量,分別對(duì)應(yīng)紅、綠、藍(lán)三原色,按下“取消”按鈕后返回空的向量;如果給出向量c0,則在圖中指向c0所定義的顏色位置,且按下“取消”按鈕時(shí)返回c0的值。,字體設(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=uisetfont s = FontName: 楷體_GB2312 FontUnits: points FontSize: 42 FontWeight: bold FontAngle: normal,警告與錯(cuò)誤信息對(duì)話框 warndlg和 errordlg函數(shù) 二者的顯示圖標(biāo)不同。 例: ?h=warndlg({‘error:’,‘code 1111.’},‘Warning’) ?h=errordlg({error:,code 1111.},Error),幫助信息對(duì)話框 與警告、錯(cuò)誤信息對(duì)話框基本一致,僅僅是圖標(biāo)的不同。 例: ?h=helpdlg({幫助信息:,幫助信息對(duì)話框和警告錯(cuò)誤對(duì)話框基本一致,只是圖標(biāo)不同!},幫助),通用信息框 msgbox(‘顯示信息’,’標(biāo)題’,’圖標(biāo)’) 圖標(biāo)包括:Error、Help、Warn以及Custom,如果缺省則為None。 ?data=1:64;data=(data*data)/64; ?msgbox(This is an example of msgbox!,custom ico,custom,data,hot(64)),Matlab圖形界面基本控件,靜態(tài)文本’text’ 一般用來(lái)作為信息提示用。 編輯框’edit’ 讀取用戶數(shù)據(jù)的文字窗口。 框架 ‘frame’ 概括一組控件,也可以修飾用。 列表框‘list’ 包含多個(gè)選項(xiàng)供用戶選擇。,滾動(dòng)條’slider’ 圖示某個(gè)范圍。 按鈕’pushbutton’ 其上的字符說(shuō)明其作用。 切換按鈕’toggle’ 兩狀態(tài)按鈕,單擊改變其狀態(tài)。 收音機(jī)按鈕’radio’ 一組選項(xiàng),其中只能有一個(gè)被選中。 檢取框’check’ 一組選項(xiàng),可以選擇多項(xiàng)。 彈出式菜單’popup’ 選中時(shí)打開(kāi)一個(gè)列表。,控件的常用屬性,Units與position屬性 意義同上,這里的位置是相對(duì)該窗口的左下角; String屬性 標(biāo)注在控件上,用來(lái)說(shuō)明或提示; Callback屬性 實(shí)現(xiàn)該控件的實(shí)質(zhì)性功能; Enable屬性 該控件的使能狀態(tài)‘on’或‘off’,Cdata屬性 真彩色位圖,為一三維數(shù)組,用于美化界面; Tooltipstring屬性 鼠標(biāo)指針位于該控件時(shí)的提示信息顯示; Interruptable屬性 是否中斷當(dāng)前回調(diào)函數(shù)的執(zhí)行,‘on’或‘off’ 字體屬性 設(shè)置字體,例1:,h_main=figure(‘name’,‘a(chǎn) demo of gui design’,‘menubar’,‘none’,… numbertitle,off,position,[100 100 300 100]); h_edit=uicontrol(style,edit,backgroundcolor,[1 1 1],position,[20 20 50 20],. tag,myedit,string,1,horizontalalignment,left); h_but1=uicontrol(style,pushbutton,position,[20 50 50 20],string,INC,. callback,[v=eval(get(h_edit,string));,. set(h_edit,string,int2str(v+1));]); h_but2=uicontrol(style,pushbutton,position,[80 50 50 20],string,DEC,. callback,[v=eval(get(h_edit,string));,set(h_edit,string,int2str(v-1));]);,function gui_counter1() %gui_counter is a demo of gui design. h_main=figure(name,a demo of gui design,menubar,none,. numbertitle,off,position,[100 100 300 100]); h_edit=uicontrol(style,edit,backgroundcolor,[1 1 1],position,[20 20 50 20],. tag,myedit,string,1,horizontalalignment,left); h_but1=uicontrol(style,pushbutton,position,[20 50 50 20],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,[80 50 50 20],string,DEC,. callback,[h=findobj(gcf,tag,myedit);,v=eval(get(h,string));,. set(h,string,int2str(v-1));]);,例2,function gui_demo() %GUI_demo is another demo of GUI design. h_main=figure(units,normalized,position,[0.3 0.3 0.5 0.4],. name,GUI demostration,numbertitle,off); h_axis=axes(units,normalized,position,[0.3 0.15 0.6 0.7],. tag,axplot,xlim,[0 10],ylim,[-1 1]); 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.1 0.6 0.06 0.1],cdata,bmp1,. callback,zoom on,tooltipstring,Enable zooming); h_2=uicontrol(style,pushbutton,units,normalized,. position,[0.04 0.45 0.06 0.1],cdata,bmp2,. callback,zoom xon,tooltipstring,Enable zoom on x-axis only); h_3=uicontrol(style,pushbutton,units,normalized,. position,[0.16 0.45 0.06 0.1],cdata,bmp3,. callback,zoom yon,tooltipstring,Enable zoom on y-axis only); h_4=uicontrol(style,pushbutton,units,normalized,. position,[0.1 0.3 0.06 0.1],cdata,bmp4,. callback,zoom off,tooltipstring,Disable zooming);,,Matlab菜單系統(tǒng)設(shè)計(jì),菜單系統(tǒng)的生成 菜單項(xiàng)句柄=uimenu(窗口句柄,屬性1,屬性值1,屬性2,屬性值2,…) 子菜單句柄=uimenu(菜單項(xiàng)句柄,屬性1,屬性值1,…) 屬性: 菜單條名稱(chēng)label 回調(diào)函數(shù)callback,,熱鍵名稱(chēng)accelerator 背景顏色backgroundcolor 前景顏色foregroundcolor 選中狀態(tài)checked 使能狀態(tài)enabled 菜單條位置position 分隔符separator,ctxmenu=uicontextmenu; set(gcf,uicontextmenu,ctxmenu); uimenu(ctxmenu,label,zoom on,callback,zoom on); uimenu(ctxmenu,label,x-axis zoom on,callback,zoom xon); uimenu(ctxmenu,label,y-axis zoom on,callback,zoom yon); uimenu(ctxmenu,label,zoom off,callback,zoom off); uimenu(ctxmenu,label,checked,checked,on,separator,on); uimenu(ctxmenu,label,disabled,enable,off);,GUI設(shè)計(jì)工具簡(jiǎn)介,guide GUI向?qū)гO(shè)計(jì)器。,屬性設(shè)計(jì)器(Property Editor),設(shè)置所選圖形對(duì)象或GUI控件各屬性的值,控件布局編輯器(Alignment Tool),設(shè)置控件的布局,菜單編輯器(Menu Editor),編輯菜單項(xiàng),回調(diào)函數(shù)編輯器(Callback Editor),編輯控件屬性所對(duì)應(yīng)的回調(diào)函數(shù),,例:示意小球碰撞過(guò)程,,,,,,出射角,上擋板,下?lián)醢?h1 = line([0,1],-0.09*[1 1]); set(h1,linewidth,5); h2 = line([0,1],1.09*[1 1]); set(h2,linewidth,7); uu={[0 1 0], 0.05 0.5}; set(h_main,userdata,uu);,,Tag=lstcolor,,Tag=rdradio1,,Tag=rdradio2,,Tag=rdradio3,function exec_bouncing(x) k=1;uu=get(gcf,userdata); if nargin==0, [x,y,k]=ginput(1);uu{3}=x;set(gcf,userdata,uu); end if k==1 if x1, x=1;end xx=[0];yy=[1];x0=0;x1=x;y1=1; while(x1=1+x) xx=[xx x1];y1=~y1;yy=[yy y1];x0=x1;x1=x1+x; end dx=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,colorg,. tag,h_ball,linewidth,5);,set(h_mark,color,uu{1}); for i=1:length(xx_l) x0=xx_l(i); y0=yy_l(i); set(h_mark,‘xdata’,x0,‘ydata’,… y0);pause(uu{2}); end end,function set_speed(key) uu=get(gcf,userdata); switch key case 1 uu{2}=uu{2}*0.5; case 2 uu{2}=uu{2}*2; case 3 uu{2}=0.05; case 4 kk=get(findobj(gcf,tag,lstcolor),value); switch kk case 1 uu{1}=[1 0 0]; case 2 uu{1}=[0 1 0]; case 3 uu{1}=[0 0 1]; end end,if key=3 hh=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); end set(gcf,userdata,uu); exec_bouncing(uu{3});,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 圖形用戶界面編程 圖形 用戶界面 編程 PPT 課件
鏈接地址:http://m.jqnhouse.com/p-2741546.html