<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          Matlab GUI編程總結(jié)

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

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

          本文引用地址:http://www.ex-cimer.com/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);

          說(shuō)明:第一句是新創(chuàng)建一個(gè)窗口,并且記錄窗口的句柄。第二句話(huà)是清除和重置相關(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));

          說(shuō)明:上述語(yǔ)句創(chuàng)建了2個(gè)菜單項(xiàng)。其中,第二個(gè)菜單項(xiàng)是第一個(gè)菜單項(xiàng)的子項(xiàng)。因此,我們可以看出,菜單的創(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)建哪個(gè)類(lèi)型的控件,控件的屬性等,都有<屬性>及其<值>決定。

          部分屬性解析:

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

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

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

          Set(handle,PropertyName,PropertyValue,…)

          PropertyValue=Get(handle, PropertyName);

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

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

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

          我們可以用subplot函數(shù),將界面分成很多份,然后選擇其中一份顯示圖像。但是,當(dāng)我們的界面復(fù)雜時(shí),我們需要在特定的區(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);

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

          6.界面的刷新

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



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

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();