第九講 用戶界面設計.ppt_第1頁
第九講 用戶界面設計.ppt_第2頁
第九講 用戶界面設計.ppt_第3頁
第九講 用戶界面設計.ppt_第4頁
第九講 用戶界面設計.ppt_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MATLAB圖形用戶界面設計,MATLAB圖形界面中各對象關系,根對象 root,圖形窗口對象 figure,右鍵菜單對象 uicontextmenu,菜單對象 uimenu,控件對象 uicontrol,坐標軸對象 axes,線對象 line,文字對象 text,表面圖對象 surface,圖像對象 image,光源對象 light,兩種界面創(chuàng)建方式: 交互式工具創(chuàng)建 命令創(chuàng)建界面,1、窗口對象及其屬性設定,1.1 窗口對象的建立 hwin=figure(屬性1,屬性值1,屬性2,屬性值2,) hwin為圖形窗口的句柄,matlab環(huán)境允許打開多個窗口,每個窗口都對應自己的句柄,通過該句柄可

2、以進一步對窗口的屬性等進行操作。 hwin=gcf 獲得當前窗口的句柄。,1.2 圖形窗口的屬性,常用屬性 color屬性 由紅綠藍三原色組成,取值范圍為0到1。 menubar屬性 設置菜單條的形式。 MenuBar屬性的取值可以是figure(缺省值)或none。用來控制圖形窗口是否應該具有菜單條。如果它的屬性值為none,則表示該圖形窗口沒有菜單條。這時用戶可以根據(jù)后面將介紹的uimenu()函數(shù)來加入自己的菜單條,如果屬性值為figure,則該窗口將保持圖形窗口默認的菜單條,這時也可以采用uimenu()函數(shù)在原默認的圖形窗口菜單后面添加新的菜單項。 name屬性 設置圖形窗口的標題欄

3、中標題內容,其屬性值為一字符串。 numbertitle屬性 是否顯示圖形窗口標題欄中的圖形標號。Name屬性的取值可以是任何字符串,它的缺省值為空。這個字符串作為圖形窗口的標題。一般情況下,其標題形式為:“Figure 1:字符串。 units屬性 設定圖形單位。如:pixels(象素點)、inches(英寸)、centimeters(厘米)、normalized(歸一值)等,position屬性 設定窗口的位置和大小,為14向量,前兩個值為窗口左下角橫縱坐標值,后兩個元素值為窗口的寬度和高度,其單位由units屬性設定。 resize屬性 確定是否可以改變圖形窗口的大小。 toolbar屬

4、性 是否顯示工具條。 visible屬性 決定窗口是否為可見。 Pointer屬性 設置鼠標的顯示形式。,回調函數(shù)(callback function),CloseRequestFcn關閉窗口時響應函數(shù) KeyPressFcn鍵盤按下時響應函數(shù) windowButtonDownFcn-鼠標按下時響應函數(shù) WindowButtonMotionFcn-鼠標移動時響應函數(shù) CreateFcn和DeleteFcn-建立和刪除對象時響應函數(shù) CallBack-對象被選中時響應函數(shù),gwin=figure(visible,off); pause set(gwin,color,1,0,0,position,

5、100,200,300,300,. name,My program,numbertitle,off,menubar,none); set(gwin,visible,on) set(gwin,windowbuttondownfcn,helpdlg(mouse button down!) set(gwin,keypressfcn,helpdlg(keyboard pressed!),一旦該對象指定的事件發(fā)生,將自動調用某指定的函數(shù),它可以是matlab文件,也可以是一組matlab程序。,例1 建立一個圖形窗口。該圖形窗口沒有菜單條,標題名稱為“我的圖形窗口”,起始于屏幕左下角、寬度和高度分別為4

6、50像素點和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:修改圖形位置 space = 5; top_space = 80; scn_size = get(0,ScreenSize); p

7、os1 = space, 2/3*scn_size(4) + space,. scn_size(3)/2 - 2*space, scn_size(4)/3 - (top_space + space); pos2 = pos1(1) + scn_size(3)/2, pos1(2),. pos1(3), pos1(4); h1 = figure(1); peaks; h2 = figure(2); membrane; set(h1, Position, pos1) %利用set命令修改圖形窗口位置 set(h2, Position, pos2),1.3 標準對話框及其調用,1. 文件名操作函數(shù)

8、uigetfile() 函數(shù)打開一個文件進行讀、寫的對話框。 fname,pname=uigetfile(ffilter,strtitle,x,y) ffilter為文件名過濾器;strtiltle為對話框窗口標題欄的顯示內容;x、y為對話框出現(xiàn)的位置,省略則采用默認位置。,f,p=uigetfile(*.m;*.txt,請選擇一個文件) f = fileprint.m p = E:MATLABR11work,2. 顏色設置對話框 c=uisetcolor; 或 c=uisetcolor(c0); 函數(shù)返回一個13的顏色向量,分別對應紅、綠、藍三原色,按下“取消”按鈕后返回空的向量;如果給出向

9、量c0,則在圖中指向c0所定義的顏色位置,且按下“取消”按鈕時返回c0的值。,3.字體設置對話框 h_Font=uisetfont 或 h_Font=uisetfont(h_Text,strTitle) h_Font為字體屬性的結構體;h_Text為要設置的字符句柄,strTitle為對話框的標題欄內容。,s=uisetfont s = FontName: 楷體_GB2312 FontUnits: points FontSize: 42 FontWeight: bold FontAngle: normal,4. 警告與錯誤信息對話框warndlg和 errordlg函數(shù),格式: warndlg

10、(警告信息,對話框名字) errordlg(錯誤信息,對話框名字) 二者的顯示圖標不同。 例: h=warndlg(error:,code1111.,Warning) h=errordlg(error:,code 1111.,Error),5. 幫助信息對話框 與警告、錯誤信息對話框基本一致,僅僅是圖標的不同。 例: h=helpdlg(幫助信息:,幫助信息對話框和警告錯誤對話框基本一致,只是圖標不同!,幫助),6.通用信息框 msgbox(顯示信息,標題,圖標) 圖標包括:Error、Help、Warn以及Custom,如果缺省則為None。 data=1:64;data=(data*dat

11、a)/64; msgbox(This is an example of msgbox!,custom ico,custom,data,hot(64),1.4 Matlab圖形界面基本控件,1. 常用控件 靜態(tài)文本static text 一般用來作為信息提示用。 編輯框edit text 讀取用戶數(shù)據(jù)的文字窗口。 面板 panel 概括一組控件,也可以修飾用。 列表框listbox 包含多個選項供用戶選擇。,滾動條slider 圖示某個范圍。 按鈕pushbutton 其上的字符說明其作用。 切換按鈕toggle button 兩狀態(tài)按鈕,單擊改變其狀態(tài)。 收音機按鈕radiobutton 一組

12、選項,其中只能有一個被選中。 復選框check button 一組選項,可以選擇多項。 彈出式菜單popupmenu 選中時打開一個列表。,2.2 控件對象的屬性,控件對象的屬性分為兩大類: 第一類是所有控件對象都具有的公共屬性 第二類是把控件對象作為圖形對象所具有的專有特性,(1) 公共屬性,對象常用的公共屬性: Children屬性: 取值為空陣,控件對象沒有子對象 Parent屬性:某個圖形窗口的句柄值 Tag屬性:取值為字符串,定義了該控件的一個標識值,所有 程序通過標識值來找出控件對象 Type屬性 :取值總是uicontrol,表明圖形對象的類型 UserData屬性: 一個矩陣,

13、可以在此屬性保存與該控件對象相 關的重要數(shù)據(jù)或信息,借此傳遞數(shù)據(jù)或信息 Visible屬性: 可視化與否,2.控件的常用屬性,Units與 position屬性 意義同上,這里的位置是相對該窗口的左下角; String屬性 標注在控件上,用來說明或提示; Callback屬性 實現(xiàn)該控件的實質性功能; Enable屬性 該控件的使能狀態(tài)on或off tag 屬性 同上,例1:,h_main=figure(name,a demo of gui design,menubar,none, numbertitle,off,position,100 100 300 100); h_edit=uicont

14、rol(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 2

15、0,string,DEC,. callback,v=eval(get(h_edit,string);,set(h_edit,string,int2str(v-1););,設計為函數(shù)文件: 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

16、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,. c

17、allback,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

18、 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(

19、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=uicont

20、rol(style,pushbutton,units,normalized,. position,0.1 0.3 0.06 0.1,cdata,bmp4,. callback,zoom off,tooltipstring,Disable zooming);,1.5. 坐標軸對象 建立坐標軸對象使用axes函數(shù),調用它的命令形式為: 句柄變量=axes(屬性名1,屬性值1,屬性名2,屬性值2,) MATLAB為每個坐標軸對象提供了很多屬性。除公共屬性外,還有其他常用屬性。,例 利用坐標軸對象實現(xiàn)圖形窗口的任意分割。 程序如下: clf; %清圖形窗口 x=linspace(0,2*pi,20);

21、 y=sin(x); figure axes(Posi,0.2,0.2,0.2,0.7); plot(y,x); title(sin(x)-1); axes(Posi,0.4,0.5,0.2,0.09); stairs(x,y); title(sin(x)-2); axes(Posi,0.55,0.6,0.25,0.3); stem(x,y);title(sin(x)-3); axes(Posi,0.55,0.2,0.25,0.2); stem(x,y); title(sin(x)-4);,1.6. 曲線對象 建立曲線對象使用line函數(shù),調用它的命令形式為: 句柄變量=line(x,y,z,

22、屬性名1,屬性值1,屬性名2,屬性值2,) 其中對x,y,z的解釋與高層曲線函數(shù)plot和plot3等一樣,其余的解釋與前面介紹過的figure和axes函數(shù)類似。每個曲線對象也具有很多屬性。除公共屬性外,還有其他常用屬性。,1.7. 文字對象 使用text函數(shù)可以根據(jù)指定位置和屬性值添加文字說明,并保存句柄。調用該函數(shù)的命令形式為: 句柄變量=text(x,y,z,說明文字,屬性名1,屬性值1,屬性名2,屬性值2,) 其中說明文字中除使用標準的ASCII字符外,還可使用LATEX格式的控制字符。 除公共屬性外,文字對象還有其他常用屬性。,1.8. 曲面對象 建立曲面對象使用surface函數(shù)

23、,調用它的命令形式為: 句柄變量=surface(x,y,z,屬性名1,屬性值1,屬性名2,屬性值2,) 其中對x,y,z的解釋與高層曲面函數(shù)mesh和surf等一樣,其余的解釋與前面介紹過的figure和axes等函數(shù)類似。 每個曲面對象也具有很多屬性。除公共屬性外,還有其他常用屬性。,例 x,y=meshgrid(-2:.4:2); z=x.*exp(-x.2-y.2); fh=figure(Position,350 275 400 300,Color,w); ah=axes(color,.8 .8 .8,XTick,-2 -1 0 1 2,YTick,-2 -1 0 1 2); sh=s

24、urface(Xdata,x,Ydata,y,Zdata,z,. Facecolor,get(ah,Color)+.1,Edgecolor,k,Marker,o,. MarkerFaceColor,.5 1 .85);,例 利用曲面對象繪制三維曲面z=sin(y)cos(x)。程序如下: x=0:0.1:2*pi; x,y=meshgrid(x); z=sin(y).*cos(x); axes(view,-37.5,30); hs=surface(x,y,z,FaceColor,w,EdgeColor,flat); grid on; xlabel(x-axis) ylabel(y-axis)

25、zlabel(z-axis); title(mesh-surf); pause set(hs,FaceColor,flat);,2.菜單設計,MATLAB的各個圖形窗口有自己的菜單欄,包括File、Edit、Windows和Help等菜單項。為了建立用戶自己的菜單系統(tǒng),可以先將圖形窗口的MenuBar屬性事先設置為none,以取消圖形窗口缺省的菜單,然后再建立用戶自己的菜單。,2、菜單設計,1.建立用戶菜單,要建立用戶菜單可用uimenu函數(shù),因其調用方法不同,該函數(shù)可以用于建立菜單條中的菜單項和子菜單中的菜單項。建立菜單條的函數(shù)調用形式為: 菜單項句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,) 建立子菜單的函數(shù)調用形式為: 子菜單句柄=uimenu(父菜單句柄,屬性名1,屬性值1,屬性名2,屬性值2,),2、菜單設計,2.菜單對象常用屬性,(1) Tag屬性 Tag屬性的取值是字符串,它定義了該菜單對象的一個標識值。定義了Tag屬性后,在任何程序中都可以通過這個標識值找出該菜單對象。 (2) Type屬性 Type屬的取值總是uimenu,這個屬性值標明圖形對象的類型。對菜單對象,其類型就是uimenu,用戶不能改寫這個屬性。 (3) UserData屬性 UserData屬性的取值是一個矩陣,缺省值為空矩陣,用戶可以在

溫馨提示

  • 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

提交評論