新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Matlab GUI編程總結(jié)

Matlab GUI編程總結(jié)

作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
1.創(chuàng)建及初始化界面(Figure)

SystemFrameHandle=figure(1);%創(chuàng)建一個窗口

本文引用地址:http://m.butianyuan.cn/article/201612/324233.htm

clfreset

set(gcf,name,CSplatform NUPT,numbertitle,off,...

unit,normalized,position,[0.02,0.1,0.92,0.82],...

menubar,none);

說明:第一句是新創(chuàng)建一個窗口,并且記錄窗口的句柄。第二句話是清除和重置相關(guān)的窗口及圖形信息。第三句是設(shè)置gcf的屬性。屬性的格式是:先<屬性名>,后緊接著是屬性的<值>。其中g(shù)cf:Get handle to current figure.也即是獲得當(dāng)前窗口的句柄。窗口的屬性很多,具體可以參看matlab幫助文檔。http://www.mathworks.cn/help/techdoc/ref/figure_props.html;jsessionid=b1a1b2c452f8eed5976059921483

2.菜單(uimenu)

menu_file=uimenu(gcf,Label,File(&F));

menu_open_image=uimenu(menu_file,Label,Open Images(&O));

說明:上述語句創(chuàng)建了2個菜單項。其中,第二個菜單項是第一個菜單項的子項。因此,我們可以看出,菜單的創(chuàng)建有2中方法:

handle = uimenu(PropertyName,PropertyValue,...)
handle = uimenu(parent,PropertyName,PropertyValue,...)

uimenu的屬性和uicontrol的屬性一樣,具體看第三節(jié)

3.控件(uicontrol)

控件的創(chuàng)建有如下2中方法

handle =uicontrol(PropertyName,PropertyValue,...)
handle = uicontrol(parent,PropertyName,PropertyValue)

具體是創(chuàng)建哪個類型的控件,控件的屬性等,都有<屬性>及其<值>決定。

部分屬性解析:

1 ‘BakcgroundColor(背景顏色)---ColorSpec(特定的顏色).這個屬性聲明了用來填充uicontrol對象的背景顏色,ColorSpec是一個三元素的RGB 向量或者標(biāo)準(zhǔn)顏色的字符串號,默認(rèn)的顏色值是和系統(tǒng)相關(guān)的,并且可以通過輸入命令 get(0,DefaultUuicontrolBackgroundColor)獲得。該<值>的格式為[0.10.1 0.1];其中,三個值分別代表紅、綠、藍(lán)。值的范圍0~1
2 ‘Callback(返回,回調(diào))----string(字符串)。這個屬性聲明了當(dāng)用戶觸發(fā)uicontrol對象(如:在按下一個pushbutton或者拖動一個 slider)時候所執(zhí)行的字符串(一般為函數(shù)名),frame 和靜態(tài)的textuicontrol類型不發(fā)出回調(diào)。更確切的說,callback就是設(shè)置控件的消息響應(yīng)處理函數(shù)。
3 ‘CData--m-by-n-by-3array( 矩陣)這個屬性是一個在pushbutton或fogglebuttonuicontrol類型上顯示的真彩色圖像。
4 ‘Enable---{‘on} (默認(rèn)狀態(tài))|‘inactive(靜態(tài))|off(關(guān))這個屬性聲明了是否啟用這個uicontrol對象,當(dāng)設(shè)置為on的時候,在這個 uicontrol被選中的時候,執(zhí)行這個回調(diào)字符串,當(dāng)設(shè)置為off的時候,這個uicontrol標(biāo)簽字符串就變暗。當(dāng)設(shè)置為 inactive 的時候,uicontrol沒有被變暗,當(dāng)設(shè)置為off和inactive的時候,不執(zhí)行這個回調(diào)字符串,但是ButtonDownFcn屬性還是會起作用。
5 ‘Extent(寬度,長度)---[0 0 width heigth],這個屬性是一個只讀屬性,它返回用來標(biāo)識這個uicontrol所使用的文本字符串的大小,其格式為標(biāo)準(zhǔn)的直角坐標(biāo)格式,單位為 Units屬性所聲明的單位,這個屬性可用于確定裝載所期望標(biāo)簽字符串而需要的uicontrol的大小。
6 ‘FontAngle(字體傾斜度)---{‘normal}|italic(斜體的)|oblique(斜的,歪的)這個屬性聲明了所用的字符的傾斜度。
7 ‘FontName(字體)---string這個屬性聲明了所使用的字體類型,使用FixedWidth就將字體設(shè)置為保存在根對象的FixedWidthFontName屬性中的字體。
8 ‘FontSize(字體大?。?--number(數(shù)字),聲明了字體的大小,單位為FontUnits屬性所聲明的單位。‘FontUnits— {‘points(點)}|normalized|inches(英寸)|centimeters(厘米)|pixels(圖素)這個屬性聲明了字體相對于這個高度的大小使用的單位,設(shè)定為normalize是指uicontrol的高度為1.
9 ‘FontWeight(字體粗細(xì))---light|{‘normal}|demi(半)|boid
10 ‘ForegroundColor(前景色)---ColorSpec(色值)聲明了uicontrol的標(biāo)簽文本的顏色,ColorSpec是一個三元素的RGB向量,或者是一個標(biāo)準(zhǔn)顏色的字符串名,默認(rèn)值為黑色。
11‘HorizontalAlignment(水平方向上的對齊方式)—{‘left}(左)|center(中)|right(右)這個屬性聲明了uicontrol在水平方向上的對齊方式,在windowspc機(jī)上,這個屬性只影響到edit和text類型的uicontrol.
12 ‘ListboxTop---scalar,對listbox類型的uicontrol,這個屬性聲明了顯示在列表最頂端的字符串的索引。
13 ‘Max(最大)---scalar(比列),對于radiobutton和checkbox類型的uicontrol,Max是uicontrol為on時Value 屬性的值,對于slider類型的uicontrol,‘Max是用戶能夠選擇的最大值,并且它必須比Min屬性所聲明的值要大,默認(rèn)值為1,對于edit 類型的uicontrol,如果Max-‘Min>1,那么就可以進(jìn)行多項選擇,如果Max-‘Min<=1,那么就只可以進(jìn)行單項選擇。
14 ‘Min---scalar類似13
15 ‘Position(位置)---[left(左) bottom(底) width(寬) heigh(高)]它聲明了uicontrol的位置,格式為相對于圖形窗口左下角的標(biāo)準(zhǔn)直角坐標(biāo)格式,單位為Units屬性所定義的單位,windowspc中‘popupmenu類型的uicontrol的高度是由字體來設(shè)置的,并且將heigth 忽略。
16 ‘SliderStep(滾動條步長)—[arrow_step trough_step]這個屬性聲明了一個值,這個值是經(jīng)過標(biāo)定的Max-Min ,大小在0到1間,arrow-step是點滾動條上的箭頭時滾動條移動的步長, trough_step是點滾動條的滑槽時滾動條移動的步長。
17 ‘String— string這個屬性聲明了顯示在按鈕,撥動按鈕,靜態(tài)文本,彈出菜單上的uicontrol標(biāo)簽字符串,彈出菜單中的多個菜單項或者列表中的多個列表項可以聲明為字符串單元數(shù)組,字符串矩陣或者由豎線字符分開的字符串,多行可編輯文本或者靜態(tài)文本控件中的行分隔符號出現(xiàn)在字符串矩陣的各行之間或者字符串單元數(shù)組的每一個單元之間,豎線字符未被解釋成線分隔符,在edit類型的uicontrol中,經(jīng)過修改的文本可以通過這個屬性返回。
18.‘Style(類型)—‘pushbutton(按鈕鍵)|togglebutton(觸發(fā)器)|radiobutton(無線按鈕)|chechbox(檢查框)|edit(編輯)|text(文本)|slider(滑標(biāo))|frame(框)|listbox(列表)|popupmenu(躍上型)這個屬性聲明了要生成的uicontrol對象類型

19.’Visible’(可見)——該屬性默認(rèn)值為‘on’,當(dāng)該值設(shè)置成’off’時,該控件不可見。通過控制控件的顯示與不顯示,可以完成‘刷新’界面的功能。

4.設(shè)置和獲取屬性(set and get)

Set(handle,PropertyName,PropertyValue,…)

PropertyValue=Get(handle, PropertyName);

上述是設(shè)置和獲得屬性的調(diào)用語法。無論是窗口、菜單還是控件,都可以通過set修改其屬性,也可以通過get獲取其屬性。重要的是,一定要獲得它們的句柄(handle),因此,在創(chuàng)建窗口、菜單和控件時,要保存它們的句柄。

Callback函數(shù):在控件的回調(diào)函數(shù)中,我們可以通過獲得或設(shè)置相應(yīng)控件上的值,來達(dá)到我們的目的。因此,我們可以將句柄通過參數(shù)的方式或聲明為全局變量,以達(dá)到在其他函數(shù)中設(shè)置獲取控件的屬性。

5.特定區(qū)域顯示圖像

我們可以用subplot函數(shù),將界面分成很多份,然后選擇其中一份顯示圖像。但是,當(dāng)我們的界面復(fù)雜時,我們需要在特定的區(qū)域內(nèi)顯示圖像。我們可以采用如下方法:

NewImageShowHandle=axes(Units,normalized,...

position,[0.60.52 .3 .4],Color,[0.2 0.2 0.2],Visible,off,Parent,SystemFrameHandle);

imshow(uint8(reconstructed_image),Parent,NewImageShowHandle);

也即是:先在特定的位置新建一個坐標(biāo)(axes),然后在imshow函數(shù)中,設(shè)置顯示圖像的‘父窗口’即可。

6.界面的刷新

一般情況下,不存在界面刷新的問題。但是,當(dāng)我們需要在程序運行的過程中更新界面的某一個控件,我們就需要實時刷新界面。一般情況下,由于matlab在運行程序時,執(zhí)行的是主線程,因為界面線程的優(yōu)先級低于主線程,界面線程要等到主線程執(zhí)行完之后才執(zhí)行。但是,我們可以調(diào)用pause(0.000001) 函數(shù),讓主線程暫停0.000001秒,刷新界面后再去執(zhí)行主線程?;诖耍揖帉懥艘粋€‘進(jìn)度提示’控件。詳見示例代碼。



關(guān)鍵詞: MatlabGUI編程總

評論


技術(shù)專區(qū)

關(guān)閉