原出處:http://www.qingdaoui.com/l/message.asp?mID=1334&bID=42 Tags: MATLAB MATLAB 圖形用戶界面 圖形用戶界面 GUI GUI 設(shè)計舉例 設(shè)計舉例 前面我們已經(jīng)大概的了解了MATLAB環(huán)境下的圖形用戶界面(GUI)設(shè)計,下面便通過具體的例子來演示在MATLAB環(huán)境下圖形用戶界面設(shè)計的方法與思想。 MATLAB的圖形用戶界面設(shè)計實際上是一種面向?qū)ο蟮脑O(shè)計方法。假設(shè)想建立一個圖形界面來顯示和處理二維圖形的顏色、線型及數(shù)據(jù)點的圖標。要求其基本功能是: (1)建立一個主坐標系,用來顯示要繪制的二維圖形; (2)建立一個列表框,允許用戶選擇不同的著色方法; ?。ˋ)最初圖形界面的設(shè)想如下圖所示: ![]() (B)根據(jù)上面的設(shè)想,下面我們就來制作它的圖形用戶界面: 首先,我們先來看其圖形窗口的設(shè)置。在MATLAB命令窗口中選擇菜單可獲得一個標準MATLAB的圖形窗口,但我們可采用如下命令使得打開窗口的形式更富于變化: 窗口句柄=figure(屬性1,屬性值1,屬性2,屬性值2,……); 通過這樣的方式可以很容易地打開一個新的圖形窗口,并返回該窗口的句柄,以后我們可以方便地對它進行進一步修正,窗口的屬性諸如顏色(Color),標題名(Name)、位置(Position)等,都可根據(jù)需要設(shè)定。若要改變窗口的某些屬性,則可通過調(diào)set()函數(shù)來完成。這樣我們就得到其窗口生成的程序如下:
接下來我們看起菜單項的加入。我們已建立了一個圖形窗口,下面給它加入菜單項。 菜單設(shè)置是由uimenu()函數(shù)來完成的,該函數(shù)調(diào)用格式為: 還可在某一個菜單條下定義一個新的子菜單條: uimenu()函數(shù)的屬性最基本的有: 提示名稱(Label):可以是任意一個字符串,在菜單項提示的字符串中允許使用下劃線&標志,這樣可用鍵盤容易地激活相應(yīng)的菜單項。 回調(diào)函數(shù)(Call):可以是一個函數(shù)名稱(用引號括起),也可以是一組MATLAB命令。在該菜單條被選中后,MATLAB自動調(diào)用此回調(diào)函數(shù)來做出菜單項的響應(yīng),實現(xiàn)某一功能。在產(chǎn)生下拉菜單時“call”選項可省略,因為這時可以直接打開下一級菜單,而不是側(cè)重對某一函數(shù)進行響應(yīng)。其菜單項生成的程序如下:ymenu001=uimenu(yWin,'label','Grid'); ymenu0011=uimenu(ymenu001,'label','Grid on','callback','Grid on'); ymenu0011=uimenu(ymenu001,'label','Grid off','callback','Grid off'); ymenu002=uimenu(yWin,'label','Axes'); ymenu0021=uimenu(ymenu002,'label','Axes on','callback','set(gca,''visible'',''on'')'); ymenu0021=uimenu(ymenu002,'label','Axes off','callback','set(gca,''visible'',''off'')'); 其次我們再來設(shè)定其控件設(shè)計技術(shù)。MATLAB提供uicontrol命令來實現(xiàn)控件設(shè)計。在圖形窗口或?qū)υ捒虼翱谏系母鞣N控件均可以由該命令實現(xiàn)。用Chandle=uicontrol(窗口句柄,‘屬性名’,屬性值設(shè)置,……); 設(shè)置的屬性值在窗口句柄所指的窗口中實現(xiàn)一個控件。其程序如下: CBox=uicontrol(yWin,'style','listbox','Position',[15,240,80,45],'String','red|blue|black|bronze|mauve|yellow|green','Callback',['Colornum=get(CBox,''value'');','set(Fun,''color'',ColorStr(Colornum))']); pushbutton1=uicontrol(yWin,'style','pushbutton','Position',[15,20,80,20],'String','實 線',...'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(1)))']); pushbutton2=uicontrol(yWin,'style','pushbutton','Position',[15,50,80,20],'String','虛 線',...'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(2)))']); pushbutton3=uicontrol(yWin,'style','pushbutton','Position',[15,80,80,20],'String','星 號',...'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(3)))']); pushbutton4=uicontrol(yWin,'style','pushbutton','Position',[15,110,80,20],'String','圓 圈',...'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(4)))']); pushbutton5=uicontrol(yWin,'style','pushbutton','Position',[15,140,80,20],'String','五角星',...'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(5)))']); pushbutton6=uicontrol(yWin,'style','pushbutton','Position',[15,170,80,20],'String','十字號',...'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(6)))']); pushbutton7=uicontrol(yWin,'style','pushbutton','Position',[15,200,80,20],'String','六角星',...'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(7)))']); 最后我們再來看窗口建立時的初始化程序: yAxes=axes('Box','on','Units','points','Position',[100,20,190,200]); ColorStr=['r','b','k','c','m','y','g']; LineStr=['-',':','*','o','p','+','h']; Colornum=1; x=0:0.1:2*pi; Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(1))); 編寫完程序后保存為mydraw.m運行,可以得到如下圖所示的界面表示: ![]() 總結(jié): 通過MATLAB的圖形用戶界面設(shè)計,我們可以開發(fā)出很友好的交互式圖形界面和各種有效的工具及應(yīng)用程序??傊捎脩魣D形界面的幾點理由為: * 編寫一個多次反復(fù)用的實用函數(shù),菜單、按鈕、文本框作為輸入方法具有意義; * 編寫函數(shù)或開發(fā)應(yīng)用程序供別人使用; * 創(chuàng)建一個過程、技術(shù)或分析方法的交互式示例; * 認為GUI的簡潔,性能良好,并且想實踐一下。 |