Matlab GUI編程總結html
代碼示例:http://download.csdn.net/detail/nuptboyzhb/4474277web
1. 建立及初始化界面(Figure)編程
SystemFrameHandle=figure(1);%建立一個窗口windows
clf reset 數組
set(gcf,'name','CSplatform NUPT','numbertitle','off',...session
'unit','normalized','position',[0.02,0.1,0.92,0.82],...ide
'menubar','none');函數
說明:第一句是新建立一個窗口,而且記錄窗口的句柄。第二句話是清除和重置相關的窗口及圖形信息。第三句是設置gcf的屬性。屬性的格式是:先<屬性名>,後緊接着是屬性的<值>。其中gcf:Get handle to current figure.也便是得到當前窗口的句柄。窗口的屬性不少,具體能夠參看matlab幫助文檔。http://www.mathworks.cn/help/techdoc/ref/figure_props.html;jsessionid=b1a1b2c452f8eed5976059921483字體
2. 菜單(uimenu)ui
menu_file=uimenu(gcf,'Label','File(&F)');
menu_open_image=uimenu(menu_file,'Label','Open Images(&O)');
說明:上述語句建立了2個菜單項。其中,第二個菜單項是第一個菜單項的子項。所以,咱們能夠看出,菜單的建立有2中方法:
handle = uimenu('PropertyName',PropertyValue,...)
handle = uimenu(parent,'PropertyName',PropertyValue,...)
uimenu的屬性和uicontrol的屬性同樣,具體看第三節
3. 控件(uicontrol)
控件的建立有以下2中方法
handle =uicontrol('PropertyName',PropertyValue,...)
handle = uicontrol(parent,'PropertyName',PropertyValue)
具體是建立哪一個類型的控件,控件的屬性等,都有<屬性>及其<值>決定。
部分屬性解析:
1 ‘BakcgroundColor'(背景顏色)---ColorSpec(特定的顏色).這個屬性聲明瞭用來填充uicontrol對象的背景顏色,ColorSpec是一個三元素的RGB 向量或者標準顏色的字符串號,默認的顏色值是和系統相關的,而且能夠經過輸入命令get(0,'DefaultUuicontrolBackgroundColor')得到。該<值>的格式爲[0.10.1 0.1];其中,三個值分別表明紅、綠、藍。值的範圍0~1
2 ‘Callback'(返回,回調)----string(字符串)。這個屬性聲明瞭當用戶觸發uicontrol對象(如:在按下一個'pushbutton'或者拖動一個'slider')時候所執行的字符串(通常爲函數名),'frame' 和靜態的'text'uicontrol類型不發出回調。更確切的說,callback就是設置控件的消息響應處理函數。
3 ‘CData'--m-by-n-by-3array( 矩陣)這個屬性是一個在'pushbutton'或'fogglebutton'uicontrol類型上顯示的真彩色圖像。
4 ‘Enable'---{‘on'}(默認狀態)|‘inactive'(靜態)|'off'(關)這個屬性聲明瞭是否啓用這個uicontrol對象,當設置爲'on'的時候,在這個uicontrol被選中的時候,執行這個回調字符串,當設置爲'off'的時候,這個uicontrol標籤字符串就變暗。當設置爲'inactive' 的時候,uicontrol沒有被變暗,當設置爲'off'和'inactive'的時候,不執行這個回調字符串,可是'ButtonDownFcn'屬性仍是會起做用。
5 ‘Extent'(寬度,長度)---[0 0 width heigth],這個屬性是一個只讀屬性,它返回用來標識這個uicontrol所使用的文本字符串的大小,其格式爲標準的直角座標格式,單位爲'Units'屬性所聲明的單位,這個屬性可用於肯定裝載所指望標籤字符串而須要的uicontrol的大小。
6 ‘FontAngle'(字體傾斜度)---{‘normal'}|'italic'(斜體的)|'oblique'(斜的,歪的)這個屬性聲明瞭所用的字符的傾斜度。
7 ‘FontName'(字體)---string這個屬性聲明瞭所使用的字體類型,使用'FixedWidth'就將字體設置爲保存在根對象的'FixedWidthFontName'屬性中的字體。
8 ‘FontSize'(字體大小)---number(數字),聲明瞭字體的大小,單位爲'FontUnits'屬性所聲明的單位。‘FontUnits—{‘points'(點)}|'normalized'|'inches'(英寸)|'centimeters'(釐米)|'pixels'(圖素)這個屬性聲明瞭字體相對於這個高度的大小使用的單位,設定爲'normalize'是指uicontrol的高度爲1.
9 ‘FontWeight(字體粗細)'---'light'|{‘normal'}|'demi'(半)|'boid'
10 ‘ForegroundColor'(前景色)---ColorSpec(色值)聲明瞭uicontrol的標籤文本的顏色,ColorSpec是一個三元素的RGB向量,或者是一個標準顏色的字符串名,默認值爲黑色。
11‘HorizontalAlignment'(水平方向上的對齊方式)—{‘left'}(左)|'center'(中)|'right'(右)這個屬性聲明瞭uicontrol在水平方向上的對齊方式,在windowspc機上,這個屬性隻影響到'edit'和'text'類型的uicontrol.
12 ‘ListboxTop'---scalar,對'listbox'類型的uicontrol,這個屬性聲明瞭顯示在列表最頂端的字符串的索引。
13 ‘Max'(最大)---scalar(比列),對於'radiobutton'和'checkbox'類型的uicontrol,'Max'是uicontrol爲'on'時'Value' 屬性的值,對於'slider'類型的uicontrol,‘Max'是用戶可以選擇的最大值,而且它必須比'Min'屬性所聲明的值要大,默認值爲1,對於'edit' 類型的uicontrol,若是'Max'-‘Min'>1,那麼就能夠進行多項選擇,若是'Max'-‘Min'<=1,那麼就只能夠進行單項選擇。
14 ‘Min'---scalar相似13
15 ‘Position'(位置)---[left(左) bottom(底) width(寬) heigh(高)]它聲明瞭uicontrol的位置,格式爲相對於圖形窗口左下角的標準直角座標格式,單位爲'Units'屬性所定義的單位,windowspc中‘popupmenu'類型的uicontrol的高度是由字體來設置的,而且將heigth 忽略。
16 ‘SliderStep'(滾動條步長)—[arrow_step trough_step]這個屬性聲明瞭一個值,這個值是通過標定的'Max'-'Min' ,大小在0到1間,arrow-step是點滾動條上的箭頭時滾動條移動的步長, trough_step是點滾動條的滑槽時滾動條移動的步長。
17 ‘String'—string這個屬性聲明瞭顯示在按鈕,撥動按鈕,靜態文本,彈出菜單上的uicontrol標籤字符串,彈出菜單中的多個菜單項或者列表中的多個列表項能夠聲明爲字符串單元數組,字符串矩陣或者由豎線字符分開的字符串,多行可編輯文本或者靜態文本控件中的行分隔符號出如今字符串矩陣的各行之間或者字符串單元數組的每個單元之間,豎線字符未被解釋成線分隔符,在'edit'類型的uicontrol中,通過修改的文本能夠經過這個屬性返回。
18.‘Style'(類型)—‘pushbutton'(按鈕鍵)|'togglebutton'(觸發器)|'radiobutton'(無線按鈕)|'chechbox'(檢查框)|'edit'(編輯)|'text'(文本)|'slider'(滑標)|'frame'(框)|'listbox'(列表)|'popupmenu'(躍上型)這個屬性聲明瞭要生成的uicontrol對象類型
19.’Visible’(可見)——該屬性默認值爲‘on’,當該值設置成’off’時,該控件不可見。經過控制控件的顯示與不顯示,能夠完成‘刷新’界面的功能。
4. 設置和獲取屬性(set and get)
Set(handle,'PropertyName',PropertyValue,…)
PropertyValue=Get(handle, 'PropertyName');
上述是設置和得到屬性的調用語法。不管是窗口、菜單仍是控件,均可以經過set修改其屬性,也能夠經過get獲取其屬性。重要的是,必定要得到它們的句柄(handle),所以,在建立窗口、菜單和控件時,要保存它們的句柄。
Callback函數:在控件的回調函數中,咱們能夠經過得到或設置相應控件上的值,來達到咱們的目的。所以,咱們能夠將句柄經過參數的方式或聲明爲全局變量,以達到在其餘函數中設置獲取控件的屬性。
5. 特定區域顯示圖像
咱們能夠用subplot函數,將界面分紅不少份,而後選擇其中一份顯示圖像。可是,當咱們的界面複雜時,咱們須要在特定的區域內顯示圖像。咱們能夠採用以下方法:
NewImageShowHandle=axes('Units','normalized',...
'position',[0.6 0.52 .3 .4],'Color',[0.2 0.2 0.2],'Visible','off','Parent',SystemFrameHandle);
imshow(uint8(reconstructed_image),'Parent',NewImageShowHandle);
也便是:先在特定的位置新建一個座標(axes),而後在imshow函數中,設置顯示圖像的‘父窗口’便可。
6. 界面的刷新
通常狀況下,不存在界面刷新的問題。可是,當咱們須要在程序運行的過程當中更新界面的某一個控件,咱們就須要實時刷新界面。通常狀況下,因爲matlab在運行程序時,執行的是主線程,由於界面線程的優先級低於主線程,界面線程要等到主線程執行完以後才執行。可是,咱們能夠調用pause(0.000001)函數,讓主線程暫停0.000001秒,刷新界面後再去執行主線程。基於此,我編寫了一個‘進度提示’控件。詳見示例代碼。