課題好幾天沒有進展了,不知道是我的方法用錯了呢,還是其他的原因。先放一下這個問題,做一個介面設計,也挺麻煩的,找了好幾天的資料終於今天下午找到了,放在這裡以免以後忘記了找不到。嘿嘿。
MATLAB GUI對話方塊設計
dialog 建立對話方塊
errordlg 建立錯誤對話方塊
helpdlg 建立協助對話方塊
inputdlg 建立輸入對話方塊
listdlg 建立挑選清單對話方塊
msgbox 建立訊息對話方塊
pagedlg 顯示頁面的版面對話方塊
printdlg 顯示列印對話方塊
questdlg 問題對話方塊
uigetfile 檔案檢索對話方塊
uiputfile 為寫入而顯示的檢索對話方塊
uisetcolor 從對話方塊互動式設定對象的ColorSpec
uisetfont 互動設定對象字型特徵
warndlg 警告對話方塊
*對話方塊設計:在圖形化使用者介面程式設計中,對話方塊是重要的資訊顯示和擷取輸入資料的使用介面物件。
1、大眾交談框:
大眾交談框是利用windows資源的對話方塊,包括檔案開啟、檔案儲存、顏色設定、字型設定、列印設定等。
1) 檔案開啟對話方塊:用於開啟檔案
uigetfile
uigetfile(‘FilterSpec’)
uigetfile(‘FilterSpec’,’DialogTitle’)
uigetfile(‘FilterSpec’,’DialogTitle’,x,y)
[fname,pname]=uigetfile(…)
2) 檔案儲存對話方塊:用於儲存檔案
uiputfile
uiputfile(‘InitFile’)
uiputfile(‘InitFile’,’DialogTitle’)
uiputfile(‘InitFile’,’DialogTitle’,x,y)
[fname,pname]=uiputfile(…)
3) 顏色設定對話方塊:用於繪圖物件顏色的互動設定
c=uisetcolor(‘h_or_c,’DialogTitle’)
4) 字型設定對話方塊:用於字型屬性的互動式設定
uisetfont
uisetfont(h)
uisetfont(S)
uisetfont(h,’DialogTitle’)
uisetfont(S,’DialogTitle’)
S=uisetfont(…)
5)列印設定對話方塊:用於列印頁面的互動式設定
dlg=pagesetupdlg(fig)
pagedlg
pagedlg(fig)
6) 預覽列印對話方塊:用於對列印頁面進行預覽
printpreview
printpreview(f)
7) 列印對話方塊:
printdlg
printdlg(fig)
printdlg(‘-crossplatform’,fig)
printdlg(-‘setup’,fig)
2、MATLAB專用對話方塊
1)錯誤資訊對話方塊:用於提示錯誤資訊
errordlg 開啟預設的錯誤資訊對話方塊
errordlg(‘errorstring’) 開啟顯示’errorstring’資訊的錯誤資訊對話方塊
errordlg(‘errorstring’,’dlgname’) 開啟顯示’errorstring’資訊的錯誤資訊對話方塊,對話方塊的標題由‘dlgname’指定
erordlg(‘errorstring’,’dlgname’,’on’) 開啟顯示’errorstring’資訊的錯誤資訊對話方塊,對話方塊的標題由‘dlgname’指定. 如果對話方塊已存在,’on’參數將對話方塊顯示在最前端。
h=errodlg(…) 返回對話方塊控制代碼
例:errordlg('輸入錯誤,請重新輸入','錯誤資訊')
2) 協助對話方塊:用於協助提示資訊
helpdlg 開啟預設的協助對話方塊
helpdlg(‘helpstring’) 開啟顯示’errorstring’資訊的協助對話方塊,
helpdlg(‘helpstring’,’dlgname’) 開啟顯示’errorstring’資訊的協助對話方塊, 對話方塊的標題由‘dlgname’指定
h=helpdlg(…) 返回對話方塊控制代碼
例:helpdlg('矩陣尺寸必須相等','線上協助')
3) 輸入對話方塊:用於輸入資訊
answer=inputdlg(prompt) 開啟輸入對話方塊,prompt為單元數組,用於定義輸入資料視窗的個數和顯示提示資訊,answer為用於儲存輸入資料的單元數組。
answer=inputdlg(prompt,title) 與上者相同,title確定對話方塊的標題。
answer=inputdlg(prompt,title,lineNo) 參數lineNo可以是標量、列向量或m×2階矩陣,若為標量,表示每個輸入視窗的行數均為lineNo;若為列向量,則每個輸入視窗的行數由列向量 lineNo的每個元素確定;若為矩陣,每個元素對應一個輸入視窗,每行的第一列為輸入視窗的行數,第二列為輸入視窗的寬度。
answer=inputdlg(prompt,title,lineNo,defAns) 參數defans為一個單元數組,儲存每個輸入資料的預設值,元素個數必須與prompt 所定義的輸入視窗數相同,所有元素必須是字串。
answer=inputdlg(prompt,title,lineNo,defAns,Sesize) 參數resize決定輸入對話方塊的大小能否被調整,可選值為on或off.
例:prompt={'Input Name','Input Age'};
title='Input Name and Age';
lines=[2 1]';
def={'John Smith','35'};
answer=inputdlg(prompt,title,lines,def);
4) 列表選擇對話方塊:用於在多個選項中選擇需要的值
[selection,ok]=listdlg(‘Liststring’,S,…) 輸出參數selection為一個向量,儲存所選擇的清單項目的索引號,
輸入參數為可選項’Liststring’(單元數組), ’SelectionMode’(’single’或’multiple’, ’ListSize’([wight,height]), ’Name’ (對話方塊標題)等
5) 資訊提示對話方塊:用於顯示提示資訊
msgbox(message) 開啟資訊提示對話方塊,顯示message資訊。
msgbox(message,title) title確定對話方塊標題。
msgbox(message,title,’icon’) icon用於顯示表徵圖,可選表徵圖包括:none(無表徵圖)/error/help/warn/custom(使用者定義)
msgbox(message,title,’custom’,icondata,iconcmap) 當使用使用者定義表徵圖時,icondata為定義表徵圖的映像資料,iconcmap為映像的色彩圖。
msgbox(…,’creatmode’) 選擇模式creatmode,選項為:modal, non_modal, 和replace。
h=msgbox(…) 返回對話方塊控制代碼
6) 問題提示對話方塊:用於回答問題的多種選擇
button=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之一。
7) 進程條:以圖形方式顯示運算或處理的進程
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指定。
例:
h=waitbar(0,'pleas wait...');
for i=1:10000
waitbar(i/10000,h)
end
close(h)
MATALB的標準圖形化使用者介面
1. 訊息對話方塊
msgbox函數。它不接受使用者的任何輸入,在使用者單擊OK按鈕後,對話方塊自動關閉,然後返回程式中繼續執行。
>> msgbox('歡迎使用MATLAB') % 建立一個沒有標題的訊息對話方塊
>> msgbox('歡迎使用MATLAB','MATALB','warn') %% 建立一個有標題的訊息對話方塊
2. 錯誤對話方塊
errordlg函數。 >> errordlg %建立一個預設參數的錯誤對話方塊
>> errordlg('這是一個錯誤對話方塊','MATLAB error') %建立一個名為MATLAB error的錯誤對話方塊
3. 警告對話方塊
warndlg函數。 >> warndlg %建立一個預設參數的警告對話方塊
>> warndlg('這是一個警告對話方塊','MATLAB warning')
4. 協助對話方塊
helpdlg函數。
>> helpdlg('你需要協助嗎?','MATLAB Help')
5. 進度條設定對話方塊
waitbar函數。作用是反映程式啟動並執行完成情況。
h=waitbar(0,'請稍等......')
for i=1:10000
waitbar(i/10000)
end
6.輸入對話方塊
inputdlg函數。
prompt={'輸入梯形的上底:','輸入梯形的下底','輸入梯形的高'};%設定提示字串
name='Enter trapeaia Data';%設定標題
numlines=1;%指定輸入資料的行數
defAns={'20','50','40'};%設定預設值
Resize='on';%設定對話方塊尺寸可調節
answer=inputdlg(prompt,name,numlines,defAns,'on')%建立輸入對話方塊
7. 列表對話方塊
listdlg函數。
p=path(path,'C:\MATLAB7\work');%設定路徑,若為目前的目錄,可以省略這一步
d=dir('C:\MATLAB7\work');%擷取指標,若為目前的目錄,則d=dir
str={d.name};%擷取目錄內的檔案名稱
[sel,ok]=listdlg('Liststring',str,'PromptString','請選擇檔案','SelectionMode','Multiple')%建立列表對話方塊。
檔案選擇成功後,單擊“OK‘按鈕,系統將選擇好的檔案序號存入相應向量sel,參數ok的值為1。
8.問題對話方塊
questdlg函數。提出一個問題,等待使用者回答。預設下回答按鈕有三個:Yes、No、Cancel。當使用者單擊任何一個按鈕時,系統將該按鈕名儲存在一個變數(ButtonName)中。如果使用者關閉對話方塊,則系統將ButtonName置為空白。
>> ButtonName=questdlg('你準備好了嗎?','MATLAB quest','Yes','No','Cancel','Yes')
9.直接選取對話方塊
uigedir函數。用於使用者尋找和選擇路徑。
>> directoryname=uigetdir('C:\MATLAB7\work','瀏覽檔案件')
10.選擇檔案對話方塊
uigetfile函數。用於使用者選擇所需的檔案。
① >> [fn,pn,fi]=uigetfile('*.m','select a M-file')%開啟一個選擇M檔案的對話方塊,並選擇一個檔案
② [fn,pn,fi]=uigetfile(...
{'*.m;*.fig;*.mat;','All MATLAB File(*.m,*.fig,*.mat,*.mdl)';
'*.m','M-file(*.m)';...
'*.fig','Figure(*.fig)';...
'*.mat','MAT-flie(*.mat)';...
'*.mdl','Models(*.mdl)';...
'*.*','All Flies(*.*)'},...
'Pick a file')
%開啟一個選擇多種檔案的對話方塊,並選擇一個檔案
11.檔案儲存對話方塊
uiputfile函數。用於儲存檔案。
① >> [fn,pn,fi]=uiputfile('*.m','Save selected a M-file')
② [fn,pn,fi]=uiputfile(...
{'*.m;*.fig;*.mat;','All MATLAB File(*.m,*.fig,*.mat,*.mdl)';
'*.m','M-file(*.m)';...
'*.fig','Figure(*.fig)';...
'*.mat','MAT-flie(*.mat)';...
'*.mdl','Models(*.mdl)';...
'*.*','All Flies(*.*)'},...
'Save a file')
%建立多種儲存檔案的對話方塊,並選擇一個檔案
12.版面設定對話方塊
pagesetupdlg函數。用來設定頁面的各種屬性、參數。調用格式為:
dlg=pagesetupdlg(fig)
該命令建立一個版面設定對話方塊,在該對話方塊使用者可以設定頁面的各種屬性和參數。該命令只支援單一圖形視窗的版面設定,參數fig也必須是單一的圖形控制代碼,不可以是圖形控制代碼向量或simulink圖。
>> fig=figure;
>> dlg=pagesetupdlg(fig)
13.列印設定對話方塊
printdlg函數。使用者可以對各種列印參數進行設定。
x=[-pi:0.02:pi];
y=cos(x);
fig=figure;
plot(x,y);
printdlg(fig);%開啟Windows列印對話方塊
printdlg('-crossplatform',fig);%開啟MATLAB列印對話方塊
14.顏色設定對話方塊
uisetcolor函數。用於使用者佈建圖形的前景色彩或背景色。
① >> c=uisetcolor %建立一個顏色選擇對話方塊
② %建立一個顏色對話方塊,並設定對話方塊的初始顏色,然後選擇一種顏色用於一個繪圖物件。
x=[0:0.02:2*pi];
y=sin(x);
h=figure;
plot(x,y);
c=uisetcolor(h,'select color')
15.字型設定對話方塊
uisetfont函數。用於使用者佈建或修改文本字型、座標軸或設定控制項對象的顯示文本的字型屬性。
① >> s=uisetfont % 建立一個預設字型設定對話方塊,並設定一種字型。
② 對控制項中的文本進行設定
T1=uicontrol('style','pushbutton','string','確定',...
'position',[200 320 60 20]); %建立一個按鈕
T2=uicontrol('style','pushbutton','string','取消',...
'position',[200 220 60 20]); %建立一個按鈕
s=uisetfont(T1) %開啟字型設定對話方塊
set(T2,s) %將T1的設定複製到T2