《Matlab App Designer設(shè)計(jì)入門及實(shí)戰(zhàn)》課件匯 湯全武 第6-12章 儀器、容器、圖窗工具和航天航空組件-基于MATLAB App Designer的通信原理系統(tǒng)_第1頁
《Matlab App Designer設(shè)計(jì)入門及實(shí)戰(zhàn)》課件匯 湯全武 第6-12章 儀器、容器、圖窗工具和航天航空組件-基于MATLAB App Designer的通信原理系統(tǒng)_第2頁
《Matlab App Designer設(shè)計(jì)入門及實(shí)戰(zhàn)》課件匯 湯全武 第6-12章 儀器、容器、圖窗工具和航天航空組件-基于MATLAB App Designer的通信原理系統(tǒng)_第3頁
《Matlab App Designer設(shè)計(jì)入門及實(shí)戰(zhàn)》課件匯 湯全武 第6-12章 儀器、容器、圖窗工具和航天航空組件-基于MATLAB App Designer的通信原理系統(tǒng)_第4頁
《Matlab App Designer設(shè)計(jì)入門及實(shí)戰(zhàn)》課件匯 湯全武 第6-12章 儀器、容器、圖窗工具和航天航空組件-基于MATLAB App Designer的通信原理系統(tǒng)_第5頁
已閱讀5頁,還剩476頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第6章儀器、容器、圖窗工具和航天航空組件本章要點(diǎn)

本章主要介紹儀器組件、容器組件、圖窗工具組件和航天航空組件的創(chuàng)建及添加回調(diào)函數(shù)與自定義組件鼠標(biāo)鍵盤交互。本章要點(diǎn):⑴儀器組件。⑵容器組件。⑶圖窗工具組件。⑷航天航空組件。學(xué)習(xí)目標(biāo):⑴掌握儀器組件,包括信號燈、儀表、旋鈕和開關(guān)燈組件的創(chuàng)建及回調(diào)函數(shù)的添加;⑵掌握容器組件,包括選項(xiàng)卡組、面板和網(wǎng)格布局的創(chuàng)建及回調(diào)函數(shù)的添加;⑶掌握圖窗工具組件,包括上下文菜單、菜單欄和工具欄的創(chuàng)建及回調(diào)函數(shù)的添加;⑷掌握航天航空組件的創(chuàng)建及回調(diào)函數(shù)的添加。6.1儀器組件6.1.1信號燈【例6-1】信號燈循環(huán)從紅色到綠色到藍(lán)色變化。第一步:設(shè)置布局及屬性。添加1個(gè)信號燈和1個(gè)標(biāo)簽。第二步:在組件瀏覽器,右擊e6_1,選擇【回調(diào)】,選擇【添加StartupFcn回調(diào)】,如圖6-1所示,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:fori=1:5app.Lamp.Color=[1,0,0];

app.Label.Text='紅燈亮';

pause(2)

app.Lamp.Color=[0,1,0];

app.Label.Text='綠燈亮';

pause(2)

app.Lamp.Color=[0,0,1];

app.Label.Text='藍(lán)燈亮';

pause(2)end6.1儀器組件6.1.1信號燈運(yùn)行界面,信號燈循環(huán)從紅色到綠色到藍(lán)色變化,如圖6-2所示。圖6-1添加回調(diào)

圖6-2信息燈循環(huán)點(diǎn)亮6.1儀器組件6.1.1信號燈【例6-2】通過滑塊滑動調(diào)節(jié)信號燈的亮度。第一步:設(shè)置布局及屬性。添加1個(gè)滑塊和1個(gè)信號燈。第二步:右擊滑塊,選擇【回調(diào)】,選擇【添加SliderValueChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.Slider.Value;value=value*0.2;app.Lamp.Color=[0,value,0];運(yùn)行界面,從左到右滑動滑塊,信號燈逐漸變亮,如圖6-3所示。

圖6-3信號燈亮度調(diào)節(jié)界面6.1儀器組件6.1.2儀表、線性儀表、90度儀表和半圓形儀表【例6-3】通過儀表組件顯示編輯字段輸入的數(shù)值,當(dāng)數(shù)值大于120時(shí),信號燈被點(diǎn)亮。第一步:設(shè)置布局及屬性。添加1個(gè)儀表、1個(gè)信號燈、1個(gè)編輯字段(數(shù)值)組件。儀表組件的屬性設(shè)置如圖6-4所示。圖6-4儀表組件屬性設(shè)置6.1儀器組件6.1.2儀表、線性儀表、90度儀表和半圓形儀表第二步:右擊編輯字段(數(shù)值),選擇【回調(diào)】,選擇【添加EditFieldValueChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.EditField.Value;app.kmhGauge.Value=value;ifvalue>120

app.Lamp.Color=[1,0,0];end運(yùn)行界面,當(dāng)輸入速度小于120km/h時(shí),如圖6-5所示,當(dāng)速度大于120km/h時(shí),如圖6-6所示。

圖6-5速度小于120km/h圖6-6速度大于120km/h6.1儀器組件6.1.2儀表、線性儀表、90度儀表和半圓形儀表【例6-4】利用滑塊、儀表、線性儀表、90度儀表和半圓形儀表組件顯示攝氏度、開氏度、列氏度、華氏度和蘭氏度,當(dāng)溫度超過90攝氏度,彈出對話框提示溫度多高。第一步:設(shè)置布局及屬性。添加1個(gè)滑塊、1個(gè)儀表、1個(gè)線性儀表、1個(gè)90度儀表和1個(gè)半圓形儀表組件。第二步:右擊滑塊,選擇【回調(diào)】,選擇【添加SliderValueChanging回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:changingValue=event.Value;app.Gauge.Value=changingValue+273.15;app.Gauge_3.Value=32+1.8*changingValue;app.Gauge_4.Value=1.25*changingValue;app.Gauge_5.Value=((changingValue+273.15)*5)/9;ifchangingValue>90msgbox('溫度過高!','警告');end6.1儀器組件6.1.2儀表、線性儀表、90度儀表和半圓形儀表運(yùn)行界面,滑動滑塊的攝氏度溫度,其他儀表組件也發(fā)生變化,如圖6-7所示,當(dāng)攝氏度溫度超過90攝氏度,則彈出對話框,如圖6-8所示。

圖6-7溫度單位換算界面

圖6-8警告對話框6.1儀器組件6.1.3旋鈕和分檔旋鈕【例6-5】利用分擋旋鈕控制信號燈的顏色。第一步:設(shè)置布局及屬性。添加1個(gè)分檔旋鈕、1個(gè)信號燈組件。分檔按鈕的Items屬性設(shè)置為:Off,Red,Green,Blue。第二步:右擊分檔旋鈕,選擇【回調(diào)】,選擇【添加KnobValueChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.Knob.Value;switchvaluecase'Red'app.Lamp.Color=[1,0,0];case'Green'app.Lamp.Color=[0,1,0];case'Blue'app.Lamp.Color=[0,0,1];case'Off'app.Lamp.Color=[0.5,0.5,0.5];end6.1儀器組件6.1.3旋鈕和分檔旋鈕運(yùn)行界面,調(diào)節(jié)分擋旋鈕位置,信號燈顏色發(fā)生改變,如圖6-9所示。

圖6-9分擋旋鈕6.1儀器組件6.1.3旋鈕和分檔旋鈕【例6-6】利用分擋旋鈕的三個(gè)擋位,確定旋鈕的取值范圍,進(jìn)而旋轉(zhuǎn)旋鈕確定具體數(shù)值。最終將數(shù)值顯示在文本區(qū)域,分為實(shí)時(shí)顯示方式和旋停顯示方式。第一步:設(shè)置布局及屬性。添加1個(gè)分檔旋鈕、1個(gè)信號燈組件。分檔按鈕的Items屬性設(shè)置為:Off,Red,Green,Blue。第二步:右擊分檔旋鈕,選擇【回調(diào)】,選擇【添加Knob_2ValueChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.Knob_2.Value;switchvaluecase'Low'app.Knob.Limits=[0,50];case'Medium'app.Knob.Limits=[50,100];case'High'app.Knob.Limits=[100,150];end6.1儀器組件6.1.3旋鈕和分檔旋鈕右擊旋鈕,選擇【回調(diào)】,選擇【添加KnobValueChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.Knob.Value;app.TextArea_2.Value={'您選擇的檔位是:',app.Knob_2.Value,['您選擇的具體數(shù)值'...'是:'],num2str(app.Knob.Value)};右擊旋鈕,選擇【回調(diào)】,選擇【添加KnobValueChanging回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:changingValue=event.Value;app.TextArea.Value={'您選擇的檔位是:',app.Knob_2.Value,['您選擇的具體數(shù)值'...'是:'],num2str(changingValue)};6.1儀器組件6.1.3旋鈕和分檔旋鈕運(yùn)行界面,分擋旋鈕選擇“High”,右側(cè)旋鈕數(shù)值范圍變?yōu)椋?00到150,旋轉(zhuǎn)旋鈕指針數(shù)值將實(shí)時(shí)變化,右側(cè)旋鈕旋停后顯示數(shù)值,運(yùn)行結(jié)果如圖6-10所示。圖6-10分檔旋鈕和旋鈕運(yùn)行界面6.1儀器組件6.1.4開關(guān)、撥動開關(guān)和蹺板開關(guān)【例6-7】通過切換開關(guān)、撥動開關(guān)和蹺板開關(guān)組件的開與關(guān),控制信號燈的亮與滅。第一步:設(shè)置布局及屬性。添加1個(gè)開關(guān)、1個(gè)撥動開關(guān)、1個(gè)蹺板開關(guān)和3個(gè)信號燈。第二步:右擊開關(guān),選擇【回調(diào)】,選擇【添加Switch2_2ValueChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.Switch2_2.Value;ifstrcmp(value,'On')app.Lamp_4.Color=[1.00,0.41,0.16];elseapp.Lamp_4.Color=[0.5,0.5,0.5];end6.1儀器組件6.1.4開關(guān)、撥動開關(guān)和蹺板開關(guān)右擊撥動開關(guān),選擇【回調(diào)】,選擇【添加Switch_2ValueChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.Switch_2.Value;ifstrcmp(value,'On')app.Lamp_5.Color=[1.00,1.00,0.00];elseapp.Lamp_5.Color=[0.5,0.5,0.5];end右擊蹺板開關(guān),選擇【回調(diào)】,選擇【添加Switch3_2ValueChanged回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.Switch3_2.Value;ifstrcmp(value,'On')

app.Lamp_6.Color=[0.00,1.00,1.00];else

app.Lamp_6.Color=[0.5,0.5,0.5];end6.1儀器組件6.1.4開關(guān)、撥動開關(guān)和蹺板開關(guān)運(yùn)行界面,切換開關(guān)、撥動開關(guān)和蹺板開關(guān)組件為開狀態(tài),運(yùn)行結(jié)果界面如圖6-11所示。圖6-11開關(guān)、撥動開關(guān)和蹺板開關(guān)組件界面6.2容器組件6.2.1選項(xiàng)卡組

【例6-8】利用選項(xiàng)卡組設(shè)計(jì)基本信息統(tǒng)計(jì)表,分為基本信息和獎勵信息兩頁。第一步:設(shè)置布局及屬性。添加1個(gè)選項(xiàng)卡組,在選項(xiàng)卡組第1頁添加:3個(gè)編輯字段(文本)、2個(gè)下拉框、1個(gè)日期選擇器和1個(gè)圖像組件。在選項(xiàng)卡組第2頁添加:1個(gè)表和2個(gè)按鈕。頁面布局如圖6-12所示。

圖6-12選項(xiàng)卡組界面布局6.2容器組件6.2.1選項(xiàng)卡組第二步:右擊圖像,選擇【回調(diào)】,選擇【添加ImageClicked回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:[file,path]=uigetfile('*.jpg')ifisequal(file,0)

disp('UserselectedCancel');else

disp(['Userselected',

fullfile(path,file)]);

app.Image.ImageSource=fullfile(path,file);end6.2容器組件6.2.1選項(xiàng)卡組選項(xiàng)卡組第2頁,用戶可以通過【增加】和【刪除】按鈕,編輯表中的內(nèi)容。運(yùn)行界面,單擊圖像組件,在本地選擇圖片添加,運(yùn)行結(jié)果如圖6-13所示。通過【增加】和【刪除】按鈕編輯表的內(nèi)容,編輯效果如圖6-14所示。

圖6-13選項(xiàng)卡組第1頁

圖6-14選項(xiàng)卡組和第2頁6.2容器組件6.2.2面板【例6-9】創(chuàng)建1個(gè)面板組件,用于填寫人員基本信息。將用戶填寫在編輯字段的信息添加到表中。第一步:設(shè)置布局及屬性。添加1個(gè)面板,在面板組件上方添加1個(gè)表、1個(gè)編輯字段(文本)、1個(gè)編輯字段(數(shù)值)和1個(gè)按鈕。第二步:點(diǎn)擊【屬性】,選擇【私有屬性】。界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:properties(Access=private)tend右擊按鈕組件,選擇【回調(diào)】,選擇【添加AddButtonPushedFcn回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:name=app.NameEditField.Value;age=app.AgeEditField.Value;nr={nameage};app.UITable.Data=[app.t;nr];%將編輯字段內(nèi)容添加到表組件app.t=app.UITable.Data;6.2容器組件6.2.2面板運(yùn)行界面,如圖6-15所示。通過在編輯框輸入數(shù)據(jù),并單擊【Add】按鈕,添加數(shù)據(jù)到表組件,如圖6-16所示。

圖6-15面板組件運(yùn)行界面

圖6-16添加基本信息界面6.2容器組件6.2.3網(wǎng)格布局單擊運(yùn)行MATLABAppDesigner界面,當(dāng)調(diào)整界面大小時(shí),界面中組件的尺寸并沒有隨之發(fā)生變化,這時(shí)可以通過網(wǎng)格布局組件解決這種問題,該組件可滿足界面放大縮小與組件放大縮小同步?!纠?-10】設(shè)計(jì)繪制三角函數(shù)圖形界面,并添加網(wǎng)格布局組件。第一步:設(shè)置布局及屬性。添加1個(gè)下拉框、1個(gè)編輯字段(數(shù)值)、1個(gè)滑塊、1個(gè)按鈕和1個(gè)坐標(biāo)區(qū),布局界面如圖6-17所示。添加網(wǎng)格布局組件,界面如圖6-18所示。圖6-17界面布局圖6-18添加網(wǎng)格布局組件6.2容器組件6.2.3網(wǎng)格布局此時(shí),可編輯網(wǎng)格大小和組件位置,根據(jù)情況增加或刪除網(wǎng)格,選擇界面左上角【配置網(wǎng)格布局】圖標(biāo),進(jìn)入編輯模式,選擇第3列,加權(quán)設(shè)置為0,如圖6-19所示,即可刪除第3列。可通過設(shè)置固定像素大小,如圖6-20所示,進(jìn)而改變網(wǎng)格大小,同時(shí)調(diào)整網(wǎng)格內(nèi)組件的尺寸。單擊左上角關(guān)閉按鈕,推出編輯模式。

圖6-19刪除網(wǎng)格某列圖6-20調(diào)整網(wǎng)格某列寬度6.2容器組件6.2.3網(wǎng)格布局此時(shí),系統(tǒng)自動調(diào)整了布局,布局效果如圖6-21所示。

圖6-21網(wǎng)格布局效果6.2容器組件6.2.3網(wǎng)格布局第二步:右擊【繪圖】按鈕組件,選擇【回調(diào)】,選擇【添加ButtonPushedFcn回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:value=app.DropDown.Value;A=app.EditField.Value;w=app.Slider.Value;switchvalue

case'sin(x)'

x=0:0.1:5*pi;

y=A*sin(w*x);

plot(x,y,app.UIAxes);

case'cos(x)'

x=0:0.1:5*pi;

y=A*cos(w*x);

plot(app.UIAxes,x,y);end6.2容器組件6.2.3網(wǎng)格布局運(yùn)行程序,運(yùn)行效果如圖6-22所示。

圖6-22程序運(yùn)行效果放大界面,各組件將根據(jù)畫布進(jìn)行縮放,其中坐標(biāo)區(qū)是固定像素,故作圖像左右寬度不變,如圖6-23所示。圖6-23運(yùn)行界面縮放效果6.3圖窗工具組件6.3.1上下文菜單【例6-11】繪制曲線

,并建立一個(gè)與之相聯(lián)系的上下文菜單,用于控制曲線的線寬和顏色。第一步:設(shè)置布局及屬性。添加1個(gè)坐標(biāo)區(qū),并拖動上下文菜單組件到坐標(biāo)區(qū),如圖6-24所示的虛線矩形框內(nèi)部,松開鼠標(biāo),即可看到上下文菜單已添加到界面,如圖6-25所示。

圖6-24拖動上下文菜單組件到界面

圖6-25添加上下文菜單組件6.3圖窗工具組件6.3.1上下文菜單

雙擊Menu和Menu2進(jìn)入上下文菜單編輯狀態(tài),如圖6-26所示,Menu右側(cè)的加號用于添加Menu的子菜單,Menu2下方的加號用于添加同級菜單。將Menu的Text屬性改為“顏色”,子菜單為“紅色”和“藍(lán)色”。將Menu2的Text屬性改為“線寬”,子菜單為“細(xì)”、“適中”和“寬”。

圖6-26上下文菜單編輯狀態(tài)6.3圖窗工具組件6.3.1上下文菜單

第二步:添加私有屬性及回調(diào)在【編輯器】菜單欄選擇【屬性】,選擇【私有屬性】,在光標(biāo)定位處,輸入程序命令如下:properties(Access=private)

hpend

在組件瀏覽器,右擊e6_11,選擇【回調(diào)】,選擇【添加StartupFcn回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:x=0:0.1:6*pi;y=x.*cos(2*x);app.hp=plot(app.UIAxes,x,y);6.3圖窗工具組件6.3.1上下文菜單

分別右擊上下文子菜單中的“紅色”、“藍(lán)色”、“細(xì)”、“適中”和“寬”子菜單,選擇【回調(diào)】,選擇【添加MenuSelected回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,分別輸入程序命令,如圖6-27所示。圖6-27添加回調(diào)界面6.3圖窗工具組件6.3.1上下文菜單運(yùn)行程序,在坐標(biāo)區(qū)組件區(qū)域,右擊,選擇線寬為“寬”,再選擇顏色為“紅色”,如圖6-28所示。運(yùn)行結(jié)果如圖6-29所示。

圖6-28上下文菜單運(yùn)行效果界面

圖6-29運(yùn)行結(jié)果界面6.3圖窗工具組件6.3.1上下文菜單【例6-12】建立一個(gè)上下文菜單,用于控制保存和打開圖像。第一步:設(shè)置布局及屬性。添加1個(gè)坐標(biāo)區(qū),并拖動上下文菜單組件到UIFigure,設(shè)置保存和打開菜單。第二步:右擊【打開】菜單,選擇【回調(diào)】,選擇【添加MenuSelected回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:[file,path]=uigetfile('*.jpg')ifisequal(file,0)

disp('UserselectedCancel');else

disp(['Userselected',

fullfile(path,file)]);

img=imread(fullfile(path,file));%讀取圖像

imshow(img,'Parent',app.UIAxes)%將圖像顯示在指定坐標(biāo)軸end6.3圖窗工具組件6.3.1上下文菜單右擊【保存】菜單,選擇【回調(diào)】,選擇【添加Menu_2Selected回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:[FileName,PathName]=uiputfile({'*.jpg','JPEG(*.jpg)';...'*.bmp','Bitmap(*.bmp)';...'*.gif','GIF(*.gif)';...'*.*','AllFiles(*.*)'},...'SavePicture','Untitled');ifFileName==0return;elseexportgraphics(app.UIAxes,[PathNameFileName],'resolution',300)end6.3圖窗工具組件6.3.1上下文菜單運(yùn)行程序,右擊選擇【打開】,彈出如圖6-30所示對話框,單擊【打開】,即可在坐標(biāo)區(qū)顯示相應(yīng)圖像。右擊【保存】,如圖6-31所示,可將坐標(biāo)區(qū)圖像保存到本地的指定位置。圖6-30彈出對話框界面

圖6-31右擊保存界面6.3圖窗工具組件6.3.2菜單欄【例6-13】建立一個(gè)菜單系統(tǒng),初始界面顯示函數(shù)曲線,同時(shí)可實(shí)現(xiàn)在界面打開和保存圖像功能,退出界面功能。第一步:設(shè)置布局及屬性。添加1個(gè)坐標(biāo)區(qū),并拖動菜單欄,如圖6-32所示。雙擊Menu和Menu2進(jìn)入菜單編輯狀態(tài),Menu下方的加號用于添加Menu的子菜單,Menu2右側(cè)的加號用于添加同級菜單。將Menu的Text屬性改為“文件”,子菜單為“保存”、“打開”和“退出”。將Menu2的Text屬性改為“幫助”。圖6-32菜單欄編輯界面6.3圖窗工具組件6.3.2菜單欄第二步:添加回調(diào)分別右擊【打開】和【保存】菜單,選擇【回調(diào)】,分別選擇【添加Menu_3Selected回調(diào)】和【添加Menu_4Selected回調(diào)】,在光標(biāo)定位處輸入程序,程序命令參考例6-12。右擊【退出】菜單,選擇【回調(diào)】,選擇【添加Menu_5Selected回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:close(app.UIFigure)右擊【幫助】菜單,選擇【回調(diào)】,選擇【添加Menu_2Selected回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:msgbox(['您可以打開或保存界面所顯示的圖像,'...'或者退出界面。'],'幫助信息');6.3圖窗工具組件6.3.2菜單欄在組件瀏覽器,右擊e6_13,選擇【回調(diào)】,選擇【添加StartupFcn回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:x=0:0.1:6*pi;y=x.*sin(2*x+4);plot(app.UIAxes,x,y,'LineWidth',1.5);運(yùn)行程序,即可實(shí)現(xiàn)圖像的保存和打開,以及退出界面,和打開幫助窗口功能。6.3圖窗工具組件6.3.2菜單欄【例6-14】實(shí)現(xiàn)通過菜單欄調(diào)整坐標(biāo)區(qū)曲線的線寬和標(biāo)記點(diǎn)形狀。第一步:設(shè)置布局及屬性。添加1個(gè)坐標(biāo)區(qū),并添加菜單欄。第二步:添加回調(diào)。在組件瀏覽器,右擊e6_14,選擇【回調(diào)】,選擇【添加StartupFcn回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:functionstartupFcn(app)x=0:0.2:5*pi;y=x.*cos(1.5*x);app.hp=plot(app.UIAxes,x,y);end點(diǎn)擊【屬性】,選擇【私有屬性】,在光標(biāo)定位處,輸入程序命令如下:properties(Access=private)

hp%Descriptionend6.3圖窗工具組件6.3.2菜單欄選擇【標(biāo)記】菜單,右擊【加號】,選擇【回調(diào)】,選擇【添加Menu_6Selected回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:set(app.hp,'marker','+');同理,右擊【星號】,添加回調(diào)函數(shù)如下:set(app.hp,'marker','*');右擊【三角形】,添加回調(diào)函數(shù)如下:set(app.hp,'marker','v');選擇【線寬】菜單,右擊【細(xì)】,添加回調(diào)函數(shù)如下:set(app.hp,'linewidth',0.2);右擊【適中】,添加回調(diào)函數(shù)如下:set(app.hp,'linewidth',1);右擊【寬】,添加回調(diào)函數(shù)如下:set(app.hp,'linewidth',2);6.3圖窗工具組件6.3.2菜單欄運(yùn)行程序,選擇線型為星形,選擇線寬為適中,運(yùn)行結(jié)果如圖6-33所示。圖6-33菜單欄調(diào)整線寬線型效果6.3圖窗工具組件6.3.3工具欄【例6-15】實(shí)現(xiàn)通過工具欄保存坐標(biāo)軸圖像,打開或關(guān)閉坐標(biāo)軸網(wǎng)格,以及添加坐標(biāo)區(qū)標(biāo)題的功能。第一步:設(shè)置布局及屬性。添加1個(gè)坐標(biāo)區(qū),并添加工具欄,工具欄添加效果如圖6-34所示。圖6-34添加工具欄第二步:添加回調(diào)。在組件瀏覽器,右擊e6_15,選擇【回調(diào)】,選擇【添加StartupFcn回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:functionstartupFcn(app)

x=0:0.1:6*pi;

y=x.^2.*sin(2*x);

plot(app.UIAxes,x,y,'LineWidth',1);end6.3圖窗工具組件6.3.3工具欄【例6-15】實(shí)現(xiàn)通過工具欄保存坐標(biāo)軸圖像,打開或關(guān)閉坐標(biāo)軸網(wǎng)格,以及添加坐標(biāo)區(qū)標(biāo)題的功能。第一步:設(shè)置布局及屬性。添加1個(gè)坐標(biāo)區(qū),并添加工具欄,工具欄添加效果如圖6-34所示。圖6-34添加工具欄第二步:添加回調(diào)。在組件瀏覽器,右擊e6_15,選擇【回調(diào)】,選擇【添加StartupFcn回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:functionstartupFcn(app)

x=0:0.1:6*pi;

y=x.^2.*sin(2*x);

plot(app.UIAxes,x,y,'LineWidth',1);end6.3圖窗工具組件6.3.3工具欄右擊保存工具欄圖標(biāo),選擇【回調(diào)】,選擇【添加PushToolClicked回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:functionPushToolClicked(app,event)[FileName,PathName]=uiputfile({'*.jpg','JPEG(*.jpg)';...'*.bmp','Bitmap(*.bmp)';...'*.gif','GIF(*.gif)';...'*.*','AllFiles(*.*)'},...'SavePicture','Untitled');ifFileName==0return;elseexportgraphics(app.UIAxes,[PathNameFileName],'resolution',300)endend6.3圖窗工具組件6.3.3工具欄右擊網(wǎng)格工具欄圖標(biāo),選擇【回調(diào)】,選擇【添加ToggleToolOn回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:functionToggleToolOn(app,event)app.UIAxes.YGrid='on';app.UIAxes.XGrid='on';end右擊網(wǎng)格工具欄圖標(biāo),選擇【回調(diào)】,選擇【添加ToggleToolOff回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:functionToggleToolOff(app,event)app.UIAxes.YGrid='off';app.UIAxes.XGrid='off';end6.3圖窗工具組件6.3.3工具欄右擊坐標(biāo)區(qū)標(biāo)題工具欄圖標(biāo),選擇【回調(diào)】,選擇【添加PushTool3Clicked回調(diào)】,在光標(biāo)定位處,輸入程序命令如下:functionPushTool3Clicked(app,event)r=inputdlg('請輸入圖形標(biāo)題:','標(biāo)題');app.UIAxes.Title.String=r;end運(yùn)行程序,單擊坐標(biāo)區(qū)標(biāo)題工具欄圖標(biāo),彈出如圖6-35所示對話框,單擊【確定】按鈕。單擊網(wǎng)格工具欄,運(yùn)行結(jié)果如圖6-36所示。圖6-35圖形標(biāo)題對話框圖6-36運(yùn)行結(jié)果圖本章小結(jié)本章介紹了儀器組件、容器組件、圖窗工具組件和航天航空組件的創(chuàng)建和回調(diào)函數(shù)的添加。選項(xiàng)卡組、面板和網(wǎng)格布局均為容納組件的容器。圖窗工具中的菜單欄和工具欄,一般位于圖形窗口的上方,用右擊某對象時(shí)在屏幕上彈出的菜單為上下文菜單。習(xí)題6-1實(shí)現(xiàn)根據(jù)溫度變換信號燈的顏色,如圖6-37所示。當(dāng)溫度為<=200度時(shí),顯示燈為藍(lán)色;當(dāng)溫度為>200度且小于500度時(shí),顯示燈為綠色;當(dāng)溫度為>=500度時(shí),顯示燈為紅色。并分別提示溫度過低、溫度適中和溫度過高。6-2利用開關(guān)、撥動開關(guān)和翹板開關(guān),分別控制各自信號燈的亮或滅。6-3如圖6-38所示,通過開關(guān)控制,當(dāng)開關(guān)打開時(shí),可通過旋鈕組件實(shí)時(shí)控制空速指示器組件顯示數(shù)值,當(dāng)開關(guān)關(guān)閉時(shí),不能實(shí)現(xiàn)控制功能。

圖6-37題6-1效果圖圖6-38題6-3效果圖習(xí)題6-4在菜單欄添加Plot菜單項(xiàng),其子菜單分別為mesh函數(shù)、surf函數(shù)和sphere函數(shù),通過單擊菜單項(xiàng)在坐標(biāo)區(qū)繪制三維曲線圖形。6-5在菜單欄分別添加調(diào)整窗口背景顏色和調(diào)整窗口尺寸的選項(xiàng),并分別添加顏色選項(xiàng)和尺寸選項(xiàng)。6-6在界面布局添加1個(gè)坐標(biāo)區(qū)和2個(gè)按鈕,當(dāng)單擊繪制圖形按鈕時(shí),即可在坐標(biāo)區(qū)繪制余弦函數(shù)圖形,當(dāng)單擊退出按鈕時(shí),即可關(guān)閉當(dāng)前窗口。6-7通過單擊繪圖按鈕,即可在坐標(biāo)系繪制余弦函數(shù)圖像,同時(shí)設(shè)置上下文菜單,用于改變曲線的顏色和線型。

第7章預(yù)定義對話框本章要點(diǎn)預(yù)定義對話框是重要的信息顯示和獲取用戶輸入數(shù)據(jù)的界面對象,它是用戶與計(jì)算機(jī)之間交互的一種手段。MATLAB提供了兩類對話框,即公共對話框和自定義對話框。公共對話框是利用Windows資源的對話框,包括文件打開與保存、顏色與字體設(shè)置、打印設(shè)置等。自定義對話框,包括進(jìn)度條、對話框、錯誤對話框等。本章要點(diǎn):⑴公共對話框調(diào)用函數(shù)。⑵自定義對話框調(diào)用函數(shù)。學(xué)習(xí)目標(biāo):⑴掌握創(chuàng)建公共對話框函數(shù)。⑵熟悉公共對話框的外觀控制語句,包括:設(shè)置對話框的尺寸、標(biāo)題和文本字體字等。⑶掌握創(chuàng)建自定義對話框函數(shù)。⑷熟悉自定義對話框的外觀控制語句,包括:設(shè)置對話框的尺寸、標(biāo)題、按鈕顯示文本和圖標(biāo)等。7.1公共對話框常見的MATLAB公共對話框與其調(diào)用函數(shù)的對應(yīng)關(guān)系,如表7-1所示。表7-1公共對話框調(diào)用函數(shù)函數(shù)含義函數(shù)含義uigetfile文件打開對話框printdlg打印對話框uiputfile文件保存對話框printpreview打印預(yù)覽對話框uisetcolor顏色設(shè)置對話框pagesetupdlg打印設(shè)置對話框uisetfont字體設(shè)置對話框

7.1公共對話框7.1.1文件打開對話框(uigetfile)

文件打開對話框由uigetfile函數(shù)創(chuàng)建,通過對話框獲取用戶的輸入,返回選擇的路徑和文件名,并對該文件進(jìn)行數(shù)據(jù)讀取操作。uigetfile的調(diào)用格式為:

file=uigetfile

可列出當(dāng)前文件夾中的文件,用戶可以選擇或輸入文件的名稱。如果文件存在且有效,當(dāng)用戶點(diǎn)擊打開時(shí),將返回文件名,如果點(diǎn)擊取消,則返回0。

[file,path]=uigetfile

返回文件的名稱和路徑,若點(diǎn)擊取消,兩個(gè)輸出參數(shù)都返回0。[file,path]=uigetfile(filter)

只顯示filter指定后綴的文件,根據(jù)該擴(kuò)展名查找對話框中顯示的文件。filter為字符串或字符串?dāng)?shù)組,用來指定文件的后綴名。

[file,path]=uigetfile(filter,title)

檢索文件,顯示由filter指定后綴的文件,并指定對話框標(biāo)題為title。

[file,path]=uigetfile(filter,title,defname)

檢索文件,并顯示默認(rèn)文件名為defname的文件。

[file,path]=uigetfile(filter,title,defname,mode)mode指定用戶是否可以選擇多個(gè)文件。將模式設(shè)置為'on'將允許進(jìn)行多選。默認(rèn)情況下設(shè)置為'off'。7.1公共對話框7.1.1文件打開對話框(uigetfile)

【例7-1】通過指定單個(gè)或多個(gè)后綴,調(diào)用文件打開對話框。輸入程序命令如下:[file,path]=uigetfile('*.jpg')彈出對話框如圖7-1所示。選擇background.jpg文件,則命令行結(jié)果如下:file='background.jpg'path='E:\Dell\實(shí)驗(yàn)項(xiàng)目\數(shù)學(xué)實(shí)驗(yàn)室\MATLAB源程序1\'輸入程序命令如下:[file,path]=uigetfile({'*.jpg','*.bmp','*.gif'})彈出對話框如圖7-2所示。

圖7-2多種文件選擇對話框圖7-1文件選擇對話框圖7.1公共對話框7.1.1文件打開對話框(uigetfile)

【例7-2】通過指定后綴、對話框標(biāo)題和默認(rèn)文件名,調(diào)用文件打開對話框。輸入程序命令如下:[file,path]=uigetfile('*.mlapp','選擇MATLABAppDesigner文件','app1.mlapp')運(yùn)行結(jié)果如圖7-3所示。再輸入程序命令如下:[file,path]=uigetfile('*.mlapp','選擇MATLABAppDesigner文','app1.mlapp','Multiselect','on')運(yùn)行結(jié)果如圖7-4所示,可以同時(shí)選擇多個(gè)文件。

圖7-3指定對話框名稱

圖7-4實(shí)現(xiàn)選擇多個(gè)文件7.1公共對話框7.1.1文件打開對話框(uigetfile)

文件名和路徑分別存于file和path,若要連接文件名和路徑可以采用以下3種方法:str=[file,path]str=strcat(file,path)str=fullfile(file,path)7.1公共對話框7.1.2文件保存對話框(uiputfile)文件打開對話框由uiputfile函數(shù)創(chuàng)建,用于打開保存文件的對話框。uiputfile的調(diào)用格式為:file=uiputfile[file,path]=uiputfile[file,path,indx]=uiputfile在上述調(diào)用格式的基礎(chǔ)上,等號右側(cè)也可以采用如下方式調(diào)用:___=uiputfile(filter)___=uiputfile(filter,title)___=uiputfile(filter,title,defname)其中,filter指定后綴,title指定對話框標(biāo)題,defname指定顯示默認(rèn)文件名。例如,輸入程序命令如下:>>[file,path,indx]=uiputfile({'*.bmp';'*.jpg'},'選擇MATLABAppDesigner文件')

7.1公共對話框7.1.2文件保存對話框(uiputfile)命令行運(yùn)行結(jié)果如下:file='1.bmp'path='D:\book\'indx=1文件保存對話框如圖7-5所示。

圖7-5文件保存對話框7.1公共對話框7.1.2文件保存對話框(uiputfile)例如,輸入程序命令如下:[filename,pathname,filterindex]=uiputfile(...{'*.m;*.fig;*.mat;*.slx;*.mdl',...'MATLABFiles(*.m,*.mlx,*.fig,*.mat,*.slx,*.mdl)';'*.m;*.mlx','programfiles(*.m,*.mlx)';...'*.fig','Figures(*.fig)';...'*.mat','MAT-files(*.mat)';...'*.slx;*.mdl','Models(*.slx,*.mdl)';...'*.*','AllFiles(*.*)'})運(yùn)行結(jié)果如圖7-6所示。

圖7-6文件保存對話框示例7.1公共對話框7.1.3顏色設(shè)置對話框(uisetcolor)顏色選擇對話框由uisetcolor函數(shù)創(chuàng)建,調(diào)用系統(tǒng)內(nèi)置的顏色設(shè)置對話框,返回用戶選擇的顏色數(shù)據(jù),其調(diào)用格式如下:c=uisetcolor顯示顏色選擇器,并以RGB三元組形式返回所選顏色。其中,RGB三元組是三元素行向量,其元素指定顏色的紅、綠和藍(lán)分量的強(qiáng)度,強(qiáng)度范圍處于[0,1]之間。c=uisetcolor(RGB)c=uisetcolor(RGB,title)其中,RGB表示三元組的默認(rèn)顏色數(shù)值,title指定對話框標(biāo)題。例如,輸入程序命令如下:c=uisetcolor([0.50.50.5]);c=uisetcolor([0.80.40],'請選擇顏色');分別彈出如圖7-7和7-8所示顏色選擇對話框。

7.1公共對話框7.1.3顏色設(shè)置對話框(uisetcolor)

圖7-7顏色選擇對話框

圖7-8指定標(biāo)題顏色選擇對話框7.1公共對話框7.1.3顏色設(shè)置對話框(uisetcolor)【例7-3】利用顏色選擇對話框設(shè)置曲線顏色。輸入程序命令如下:

clc;clear;closeall;

x=0:0.1:5*pi;

y=sin(x);

t=uisetcolor([0.80.40],'請選擇曲線的顏色');

plot(x,y,'color',t,'linewidth',1.5);運(yùn)行程序,彈出如圖7-9所示對話框,選擇顏色后,單擊【確定】按鈕,繪制曲線如圖7-10所示。

7.1公共對話框7.1.3顏色設(shè)置對話框(uisetcolor)

圖7-9選擇曲線顏色對話框

圖7-10運(yùn)行結(jié)果7.1公共對話框7.1.4字體設(shè)置對話框(uisetfont)字體設(shè)置對話框由uisetfont函數(shù)創(chuàng)建,用來設(shè)置字符、字形和字體大小,調(diào)用格式如下:uisetfontuisetfont(h)uisetfont(h,title)

【例7-4】修改曲線標(biāo)簽的字體和字號。輸入程序命令如下:clc;clear;closeall;x=0:0.1:4*pi;y=sin(x);plot(x,y);t=text(2*pi,0,'正弦曲線');out=uisetfont(t);運(yùn)行程序,彈出如圖7-11所示字體對話框,選擇相應(yīng)參數(shù)后,單擊【確定】按鈕,運(yùn)行結(jié)果如圖7-12所示。7.1公共對話框7.1.4字體設(shè)置對話框(uisetfont)

圖7-11字體對話框

圖7-12曲線標(biāo)簽字體設(shè)置效果7.1公共對話框7.1.4字體設(shè)置對話框(uisetfont)【例7-5】創(chuàng)建MATLABAppDesigner,實(shí)現(xiàn)通過上下文菜單組件,設(shè)置曲線的顏色和坐標(biāo)區(qū)標(biāo)題的字體。第一步:設(shè)置布局及屬性。添加1個(gè)坐標(biāo)區(qū)、1個(gè)上下文菜單組件。第二步:在組件瀏覽器,右擊e7_5,選擇【回調(diào)】,選擇【添加StartupFcn回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:

globalhx=0:0.1:4*pi;y=sin(x);h=plot(app.UIAxes,x,y,'linewidth',1.5);title(app.UIAxes,'正弦曲線');7.1公共對話框7.1.4字體設(shè)置對話框(uisetfont)右擊【設(shè)置標(biāo)題字體】上下文菜單,添加回調(diào)函數(shù),輸入程序命令如下:t=app.UIAxes.Title;uisetfont(t);右擊【設(shè)置曲線顏色】上下文菜單,添加回調(diào)函數(shù),輸入程序命令如下:globalht=uisetcolor([0.80.40],'請選擇曲線的顏色');set(h,'color',t)運(yùn)行程序,右擊上下文菜單,如圖7-13所示。選擇【設(shè)置標(biāo)題字體】,單擊【確定】按鈕,如圖7-14所示。選擇【設(shè)置曲線顏色】,單擊【確定】按鈕,如圖7-15所示。運(yùn)行結(jié)果如圖7-16所示。

7.1公共對話框7.1.4字體設(shè)置對話框(uisetfont)

圖7-13上下文菜單運(yùn)行界面

圖7-14字體設(shè)置對話框

圖7-15顏色設(shè)置對話框

圖7-16標(biāo)題字體和曲線顏色設(shè)置后效果7.1公共對話框7.1.5打印對話框、打印預(yù)覽對話框和頁面設(shè)置對話框打印對話框由printdlg函數(shù)創(chuàng)建,其調(diào)用格式為:printdlg%打印當(dāng)前窗口printdlg(fig)%用于打印句柄為fig的窗口打印預(yù)覽對話框由printpreview函數(shù)創(chuàng)建,其調(diào)用格式為:printpreview%顯示當(dāng)前窗口的打印預(yù)覽printpreview(fig)%顯示窗口f的預(yù)覽打印對話框打印設(shè)置對話框由pagesetupdlg函數(shù)創(chuàng)建,其調(diào)用格式為:dlg=pagesetupdlg(fig)%創(chuàng)建可以設(shè)置圖窗窗口fig的頁面布局窗口

7.2自定義對話框常見的MATLAB自定義對話框與其調(diào)用函數(shù)的對應(yīng)關(guān)系,如表7-2所示。表7-2自定義對話框調(diào)用函數(shù)函數(shù)含義函數(shù)含義waitbar進(jìn)度條msgbox信息對話框menu菜單選擇對話框questdlg提問對話框dialog普通對話框inputdlg輸入對話框errordlg錯誤對話框uigetdir目錄選擇對話框warndlg警告對話框listdlg列表選擇對話框helpdlg幫助對話框

7.2自定義對話框7.2.1進(jìn)度條(waitbar)

進(jìn)度條由waitbar函數(shù)創(chuàng)建,其調(diào)用格式為:

waitbar(x) waitbar(x,f) waitbar(x,f,'title')

其中,x表示進(jìn)度條的長度,取值范圍為[0,1]之間。waitbar(x,f)表示將進(jìn)度條f中的進(jìn)度條位置更新到x位置處。'title'為進(jìn)度條的標(biāo)題。例如,輸入程序命令如下:f=waitbar(0.2);pause(1);waitbar(0.5,f);

%將進(jìn)度條f的進(jìn)度條位置調(diào)整為0.5位置pause(1);waitbar(0.7,f);pause(1);waitbar(1,f,'加載完成');

%添加標(biāo)題為“加載完成”運(yùn)行程序命令,運(yùn)行結(jié)果如圖7-17所示。7.2自定義對話框7.2.1進(jìn)度條(waitbar)(a)進(jìn)度條x=0.2(b)進(jìn)度條x=0.5(c)進(jìn)度條x=0.7(d)進(jìn)度條x=1圖7-17進(jìn)度條動態(tài)顯示效果7.2自定義對話框7.2.1進(jìn)度條(waitbar)

MATLAB的waitbar函數(shù)可以設(shè)置多種屬性,包括進(jìn)度條的背景顏色,進(jìn)度條的前景顏色等。例如:clcclearh=waitbar(0,'請等待...','Color',[0.40.60.4]);%設(shè)置背景顏色為淡綠色fori=1:10000progress=i/10000;waitbar(progress,h,sprintf('%d%%',round(progress*100)));endclose(h);

運(yùn)行結(jié)果,如圖7-18所示。圖7-18進(jìn)度條背景色設(shè)置7.2自定義對話框7.2.1進(jìn)度條(waitbar)【例7-6】創(chuàng)建帶有取消按鈕的進(jìn)度條,且進(jìn)度條更新數(shù)據(jù)保留量兩位小數(shù)。輸入程序命令如下:clear;h=waitbar(0,'緩沖中...','CreateCancelBtn',...'setappdata(gcbf,''canceling'',1)');%創(chuàng)建進(jìn)度為0的進(jìn)度條pause(0.2);setappdata(h,'canceling',0);steps=80;fori=1:steps%循環(huán)更新進(jìn)度條顯示pause(0.1);%每隔一段時(shí)間完成進(jìn)度條更新ifgetappdata(h,'canceling')%若按下【取消】按鈕,則退出循環(huán)breakendwaitbar(i/steps,h,sprintf('加載%.2f%%...',i/steps*100));enddelete(h);%退出循環(huán)后,關(guān)閉進(jìn)度條7.2自定義對話框7.2.1進(jìn)度條(waitbar)運(yùn)行程序,運(yùn)行結(jié)果如圖7-19所示。

圖7-19有取消按鈕的進(jìn)度條7.2自定義對話框7.2.1進(jìn)度條(waitbar)【例7-7】動態(tài)繪制正弦曲線,并用進(jìn)度條顯示繪制進(jìn)度。輸入程序命令如下:x=linspace(0,10*pi,300);y=sin(x);fig=figure();line=animatedline('Color','m','LineWidth',1.5);xlim([0,10*pi]);ylim([-1,1]);

h=waitbar(0,'請等待...');

%更新曲線并顯示進(jìn)度條fori=1:length(x)y=sin(x+i/10);addpoints(line,x(i),y(i));drawnow;

waitbar(i/length(x),h,sprintf('繪制中...%.2f%%',i/length(x)*100));

%更新進(jìn)度條end

delete(h);%關(guān)閉進(jìn)度條窗口7.2自定義對話框7.2.1進(jìn)度條(waitbar)程序運(yùn)行結(jié)果如圖7-20所示。

(a)繪制曲線中16%(b)繪制曲線中91%圖7-20進(jìn)度條顯示動態(tài)繪制曲線進(jìn)度7.2自定義對話框7.2.2幫助對話框(helpdlg)在MATLAB中helpdlg函數(shù)用于創(chuàng)建幫助對話框,其調(diào)用格式為:helpdlghelpdlg(msg)helpdlg(msg,title)f=helpdlg()%返回對話框句柄其中,msg指自定義消息文本,title指自定義對話框標(biāo)題。例如,輸入程序命令為:helpdlg運(yùn)行結(jié)果如圖7-21所示。例如,當(dāng)輸入程序命令為:helpdlg('矩形的面積公式為:長*寬','幫助信息');運(yùn)行結(jié)果如圖7-22所示。7.2自定義對話框7.2.2幫助對話框(helpdlg)當(dāng)需指定帶有換行符的消息時(shí),msg使用字符向量元胞數(shù)組指定。例如,當(dāng)輸入程序命令為:helpdlg({'矩形的面積公式為:','長*寬'},'幫助信息');運(yùn)行結(jié)果如圖7-23所示。

圖7-21默認(rèn)幫助對話框

圖7-22自定義信息及標(biāo)題的幫助對話框圖7-23帶有換行符消息的幫助對話框7.2自定義對話框7.2.2幫助對話框(helpdlg)【例7-8】請創(chuàng)建幫助對話框,并修改對話框背景及按鈕文字標(biāo)簽。輸入程序命令如下:h=helpdlg('請調(diào)節(jié)顏色','幫助');%改變按鈕上的字樣ok_b=findall(0,'style','pushbutton');set(ok_b,'string','我確定')%將按鈕的string屬性改為“我確定”%改變對話框顏色set(h,'Color',[0.60.60.9])運(yùn)行程序命令,運(yùn)行結(jié)果如圖7-24所示。圖7-24修改對話框背景及按鈕文本標(biāo)簽7.2自定義對話框7.2.3警告對話框(warndlg)

在MATLAB中使用warndlg函數(shù)創(chuàng)建警告對話框,用于顯示警告信息,其調(diào)用格式為:f=warndlgf=warndlg(msg)f=warndlg(msg,title)f=warndlg(msg,title,ops)

其中,msg和title的含義與幫助對話框helpdlg函數(shù)調(diào)用格式同理。ops可以設(shè)置為non-modal'、'modal'、'replace'或結(jié)構(gòu)體數(shù)組,具體含義為:

non-modal:創(chuàng)建一個(gè)非模態(tài)警告對話框,此對話框不影響其他打開的對話框;

modal:指定警告對話框?yàn)槟B(tài)對話框,將會刪除其他具有相同標(biāo)題的錯誤、消息和警告對話框。被替代的可以是模態(tài)或非模態(tài)的警告對話框;

replace:指定警告對話框?yàn)榉悄B(tài)對話框,將會刪除其他具有相同標(biāo)題的錯誤、消息和警告對話框。被替代的可以是模態(tài)或非模態(tài)的警告對話框;

結(jié)構(gòu)體數(shù)組:需為警告對話框指定窗口樣式和解釋器,須具有WindowStyle和Interpreter字段。WindowStyle字段的值為'non-modal'、'modal'或'replace'。Interpreter字段的值為'tex'或'none',默認(rèn)值為'none'。若Interpreter值是'tex',將message值解釋為TeX。7.2自定義對話框7.2.3警告對話框(warndlg)

【例7-9】創(chuàng)建一個(gè)結(jié)構(gòu)體,指定模態(tài)窗口樣式和TeX解釋器。并創(chuàng)建警告對話框,指定結(jié)構(gòu)體作為輸入?yún)?shù)。輸入程序命令如下:opts=struct('WindowStyle','modal','Interpreter','tex');f=warndlg('\color{red}注意:\gamma=\alpha^2+\beta^2','提示',opts);運(yùn)行程序,運(yùn)行結(jié)果如圖7-25所示。圖7-25警告對話框示例7.2自定義對話框7.2.3警告對話框(warndlg)

【例7-10】請?jiān)O(shè)計(jì)一個(gè)程序,要求用戶輸入一個(gè)數(shù)字,如果該數(shù)字在1~100范圍內(nèi),則輸出這個(gè)數(shù)字;否則彈出一個(gè)警告對話框,提示用戶重新輸入,直到用戶輸入合法數(shù)字。

輸入程序命令如下:x=input('請輸入一個(gè)數(shù)字:');whilex<1||x>100h=warndlg('輸入的數(shù)字必須在1和100之間。','警告');uiwait(h);%阻止程序繼續(xù)執(zhí)行,直到用戶關(guān)閉對話框x=input('請輸入一個(gè)數(shù)字:');enddisp(['您輸入的數(shù)字是:',num2str(x)]);

運(yùn)行程序,命令行窗口輸入200,則彈出如圖7-26所示對話框。當(dāng)輸入數(shù)字5,則命令行結(jié)果如下:e7_10請輸入一個(gè)數(shù)字:200請輸入一個(gè)數(shù)字:5您輸入的數(shù)字是:57.2自定義對話框7.2.3警告對話框(warndlg)圖7-26彈出警告對話框7.2自定義對話框7.2.3警告對話框(warndlg)【例7-11】用MATLABAppDesigner實(shí)現(xiàn)在編輯框內(nèi)輸入0到10的數(shù)字,若不在此范圍內(nèi),則彈出警告對話框。

第一步:設(shè)置布局及屬性。添加1個(gè)按鈕和1個(gè)編輯字段(數(shù)值)。

第二步:右擊【確定】按鈕,選擇【回調(diào)】,選擇【轉(zhuǎn)至ButtonPushed回調(diào)】,界面自動跳轉(zhuǎn)到代碼視圖,在光標(biāo)定位處,輸入程序命令如下:x=app.EditField.Value;while(x<0||x>10)h=warndlg('輸入的數(shù)字必須在0和10之間。','警告');uiwait(h);%等待用戶關(guān)閉警告對話框happ.EditField.Value=0;x=0;end

運(yùn)行程序,當(dāng)輸入數(shù)字“5”運(yùn)行結(jié)果如圖7-27所示,當(dāng)輸入“25”則彈出如圖7-28所示對話框。7.2自定義對話框7.2.3警告對話框(warndlg)

圖7-27輸入數(shù)字界面

圖7-28警告對話框7.2自定義對話框7.2.4錯誤對話框(errordlg)

錯誤對話框用來提示程序運(yùn)行過程中出現(xiàn)的錯誤,在MATLAB中,errordlg函數(shù)用于提示錯誤信息,該函數(shù)的調(diào)用格式為:f=errordlgf=errordlg(msg)f=errordlg(msg,title)f=errordlg(msg,title,ops)

例如,輸入程序命令如下:errordlg('文件不存在','錯誤')

運(yùn)行程序,運(yùn)行結(jié)果如圖7-29所示。圖7-29錯誤對話框7.2自定義對話框7.2.4錯誤對話框(errordlg)

錯誤對話框有3個(gè)子對象,查看錯誤對話框的子對象的詳細(xì)屬性,可執(zhí)行如下代碼:f=errordlg;f1=get(f,'children');fori=1:3get(f1(i))end錯誤對話框與3個(gè)子對象之間的關(guān)系圖如圖7-30所示。圖7-30錯誤對話框與子對象結(jié)構(gòu)示意圖7.2自定義對話框7.2.4錯誤對話框(errordlg)

【例7-12】請創(chuàng)建錯誤對話框,并自定義錯誤信息的字體、字號、按鈕文字以及圖標(biāo)。輸入程序命令如下:f=errordlg('輸入格式不正確。','錯誤');f1=get(f,'Children');%獲取對話框h的所有子對象f2=findall(allchild(f),'style','pushbutton');%查找f所有子級的樣式為'pushbutton'的對象set(f2,'string','OK');%將f2字符串屬性(即按鈕文字)改為“OK”。f3=findall(f1,'type','text');%在變量f1中查找所有類型為'text'的控件set(f3,'fontname','黑體','color','b','fontsize',14);f4=findall(f,'type','image');c=imread('1.jpg');c=imresize(c,size(get(f4,'AlphaData')));%imresize調(diào)整圖像大小,與AlphaData匹配set(f4,'CData',c);7.2自定義對話框7.2.4錯誤對話框(errordlg)運(yùn)行程序,運(yùn)行結(jié)果如圖7-31所示。圖7-31自定義錯誤對話框

具體使用錯誤對話框過程中,可以將其與其他程序結(jié)合,實(shí)現(xiàn)不同錯誤信息的提示,例如,當(dāng)讀取文件失敗時(shí),提示用戶檢查文件是否存在或文件權(quán)限等問題,輸入程序命令如下:if~exist('file.txt','file')errordlg('無法找到文件,請檢查文件路徑是否正確。','文件讀取錯誤');end

例如,當(dāng)試圖訪問無效的URL地址時(shí),提示用戶該鏈接不存在或無法訪問,輸入程序命令如下:if~exist('file.txt','file')errordlg('無法找到文件,請檢查文件路徑是否正確。','文件讀取錯誤');end

上述程序在實(shí)際應(yīng)用中,需要根據(jù)具體情況進(jìn)行調(diào)整。7.2自定義對話框7.2.5信息對話框(msgbox)

在MATLAB中,msgbox函數(shù)用于顯示提示信息,其調(diào)用格式為:f=msgbox(message)f=msgbox(message,title)f=msgbox(message,title,icon)f=msgbox(message,title,custom,icondata,iconcmap)f=msgbox(,createmode)其中,icon指圖標(biāo),取值包括:none、help、warn和error,取值與圖標(biāo)對應(yīng)關(guān)系如表7-3所示。icondata指圖像數(shù)組,可以使用imread從文件中獲取圖像數(shù)組;iconcmap指顏色圖,為RGB三元組的三列矩陣;creatmode指窗口模式,包括"non-modal"、"modal"、"replace"或結(jié)構(gòu)體數(shù)組。7.2自定義對話框7.2.5信息對話框(msgbox)表7-3icon取值與圖標(biāo)的對應(yīng)關(guān)系表例如,在信息對話框中顯示多行文本,輸入程序命令如下: msgbox({'這里是第一行','這里是第二行','這里是第三行'},'詳細(xì)信息');

運(yùn)行程序命令,運(yùn)行結(jié)果如圖7-32所示。圖7-32多行文本消息的信息框7.2自定義對話框7.2.5信息對話框(msgbox)例如,實(shí)現(xiàn)帶有自定義標(biāo)題的錯誤對話框,程序命令如下:

msgbox('非法輸入!','錯誤','error','modal');運(yùn)行程序命令,運(yùn)行結(jié)果如圖7-33所示。圖7-33信息對話框?qū)崿F(xiàn)的錯誤提示7.2自定義對話框7.2.5信息對話框(msgbox)例如,使用自定義圖標(biāo)對話框,輸入程序命令如下:myicon=imread("1.jpg");h=msgbox("已成功加載","提示","custom",myicon);運(yùn)行程序,運(yùn)行結(jié)果如圖7-34所示。例如,使用TeX格式消息的模態(tài)消息對話框,程序命令如下:CreateStruct.Interpreter='tex';CreateStruct.WindowStyle='modal';h=msgbox("y=ax^2+bx+c","二次函數(shù)",CreateStruct);運(yùn)行程序,運(yùn)行結(jié)果如圖7-35所示。

圖7-34自定義圖標(biāo)信息框

圖7-35使用TeX格式消息的模態(tài)消息對話框7.2自定義對話框7.2.6提問對話框(questdlg)在MATLAB中,用questdlg函數(shù)創(chuàng)建提問對話框,其調(diào)用格式為:answer=questdlg(quest)answer=questdlg(quest,title)answer=questdlg(quest,title,defbtn)answer=questdlg(quest,title,btn1,btn2,defbtn)answer=questdlg(quest,title,btn1,btn2,btn3,defbtn)answer=questdlg(,opts)在默認(rèn)情況下,該對話框有三個(gè)標(biāo)準(zhǔn)按鈕,其標(biāo)簽分別為是、否和取消。若用戶按下其中一個(gè)按鈕,則answer值與按下的按鈕的標(biāo)簽

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論