matlab實驗 (6)
《matlab實驗 (6)》由會員分享,可在線閱讀,更多相關(guān)《matlab實驗 (6)(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 實驗六 MATLAB 圖形用戶界面制作和仿真 一、實驗目的: 1、了解句柄圖形對象 2、了解GUI的基本知識 3、掌握創(chuàng)建GUI對象的方法 4、GUI編程練習 二、相關(guān)知識 1、句柄圖形對象 (1) 圖形框架窗口對象(Figure) ? 繪制圖形的圖形框架窗口對象 ? 核心(Core)對象 ? 繪圖(Plot )對象 ? 注釋對象 (2) 圖形對象屬性的獲取和設置 ? get函數(shù) ? set函數(shù) ? 默認屬性 (3) 圖形對象的操作 ? 查找對象 ? 堆積次序 2. GUI的基本知識 (1)啟動GUI (2)布局
2、(Layout)編輯器 (3)GUIDE模板介紹 (4)運行GUI 3. 創(chuàng)建GUI對象 (1)GUI窗口的布局 ? 改變GUI窗口的大小 ? 控件的添加和對齊 (2) GUI控件的屬性控制 ? 屬性查看器的顯示 ? 一些常用的屬性 (3)菜單的添加 ? 主菜單的創(chuàng)建 ? 彈出式菜單的的創(chuàng)建 4. GUI 編 程 ? GUI的M文件 – 與句柄結(jié)構(gòu)共享數(shù)據(jù) – M文件中的函數(shù)和響應 ? 控件的使用 ? 使用句柄結(jié)構(gòu)進行GUI數(shù)據(jù)操作 三、上機練習 (一)、練習書上的例子 啟動GUIDE 啟動GUIDE
3、有三種方法:在MATLAB操作桌面,單擊File→New→GUI選項、單擊工具欄上的圖標 、在命令窗口輸入guide后回車,出現(xiàn)GUIDE Quick Start對話框。 Create new GUI選項卡包含四個初始化設計模板:Blank GUI(Default)創(chuàng)建一個空白的GUI、1) GUI with Uicontrols創(chuàng)建一個帶有控制組件的GUI、GUI with Axes and Menu創(chuàng)建一個帶有軸對象和菜單的GUI、Model Question Dialog創(chuàng)建一個問題對話框。 2)Open Existing GUI選項卡含有一個Recenty opened fi
4、les(最近打開過的GUI文件)選擇框。 選擇Blank GUI(Default)模板,單擊【OK】按鈕,打開GUI設計窗口。 單擊設計窗口File→Preferences選項,打開Preferences對話框,選中Show name in component palette選項,在組件面板中顯示控件名稱。 設計窗口的右邊為版面設計區(qū),向版面設計區(qū)添加控件,可以用鼠標從組件面板拖動來完成版面設計完成后,單擊工具欄的運行按鈕,即可運行GUI。 首次運行 GUI 時,系統(tǒng)會提示存盤。存盤完成后,系統(tǒng)會打開運行界面窗口和M文件編輯窗口,同時生成兩個文件:一個是fig文件,
5、包含對GUI及其組件的完整描述;另一個是M文件,包含GUI的程序代碼和組件回調(diào)事件代碼。 控件介紹: (1)命令按鈕(Push Button) (2)開關(guān)按鈕(Toggle Button) (3)單選按鈕(Radio Button) (4)核選框(Check Box) (5)滑動條(Slider) (6)可編輯文本框(Edit Text) (7)靜態(tài)文本框(Static Text) (8)彈出式菜單(Pop-Up Menu) (9)列表框(Listbox) (10)坐標軸(Axes) (11)面板(Panel) (12)按鈕組(Button Group) (13)
6、ActiveX控件(ActiveX Control) 對象屬性檢查器設置 : 利用對象屬性檢查器,可以查看每個對象的屬性值,也可以修改、設置對象的屬性值。 選中某個控件,單擊GUI設計窗口工具欄上 按鈕、單擊View→Property Inspector子菜單,直接雙擊控件,都可以打開對象屬性檢查器。 界面制作包括界面設計和程序?qū)崿F(xiàn),一般制作步驟如下: ? 分析界面所要求實現(xiàn)的主要功能,明確設計任務; ? 界面設計,確定界面所用部件及其屬性; ? 回調(diào)函數(shù)設置; ? 對實現(xiàn)的功能進行逐項調(diào)試檢查; ? 對界面部件進行裝飾,使其更人性化。 例子練習: 例1:根據(jù)
7、上面的界面制作步驟,制作一個界面,點擊不同控件能分別顯示sin(x)和tan(x)。 第一步,題意分析 本例子需要有一個坐標軸(Axes);要三個命令按鈕控件分別控制sin(x)和tan(x)顯示以及一個停止按鈕。 第二步,界面設計 (1)新建一個GUI界面 在MATLAB操作桌面上,單擊File → New → GUI選項,選擇Blank GUI(Default)模板,單擊“OK”按鈕,打開GUI設計窗口。 (2)添加控件 用鼠標從GUI設計窗口的組件面板中拖動坐標軸(Axes),3個命令按鈕(PushButton)控件。 (3)排列控件 選中兩個或兩個以上需要
8、排列的控件,單擊設計窗口的工具或單擊Tools→Align Objects菜單項,打開排列工具對話框, (4)設置控件屬性 雙擊需要屬性設置的控件,打開對象屬性檢查器,設置控件屬性。 “y=sin(x)”按鈕:String屬性修改為y=sin(x),F(xiàn)ontUnits屬性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3,其他為默認值。 “y=tan(x)”編輯文本:String屬性修改為y=tan(x),其他屬性同上。 “STOP”按鈕:String屬性修改為“stop”,Tag屬性修改為“stop”,其他同上。 控件設置效果如圖所示
9、: 第三步,回調(diào)函數(shù)設置 在“求零極點”按鈕上點擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function sinx_Callback(hObject, eventdata, handles)后面添加如下程序: x=0:0.01:2*pi; y=sin(x); plot(x,y) title('y=sin(x)'); xlabel('坐標x'); ylabel('坐標y'); 在函數(shù)function tanx_Callback(hObject, eventdata, handles)后面添加如下程序: x=0:0.
10、01:2*pi; y=tan(x); plot(x,y) title('y=tan(x)'); xlabel('坐標x'); ylabel('坐標y'); 在函數(shù)function stop_Callback(hObject, eventdata, handles)后面添加如下程序: close 第四步,逐項調(diào)試檢測 單擊工具欄的運行按鈕,按照提示保存后,運行并驗證程序功能。 第五步,裝飾控件 一般情況停止按鈕為紅色較為習慣,運行按鈕為綠色的,所以將STOP控件的Property Inspercter里的BackgroundColor設置為紅色;將y=sin(x)和y=ta
11、n(x)控件的Property Inspercter里的BackgroundColor設置為綠色的 例2:設計一個滾動條與一個編輯文本框互相傳遞并顯示0~10間的數(shù)字。 1、題意分析 本例需調(diào)用一個滾動條(Sliders)、一個動態(tài)文本編輯框(Edit Text)、一個靜態(tài)文本框(Static Text)、兩個命令按鈕(Push Button)。 2、控件分析 “滾動條”控件(Sliders)的響應:在圖形界面中添加該控件之后,設置它的屬性最大值max和最小值min,其值將在max和min之間變化。要獲取“滾動條”控件的當前值及范圍, “文本框”控件(Edit Text)的響應:在
12、圖形界面中添加該控件之后,該控件的屬性相當于其他語言設計中的文本框?qū)傩?,允許用戶動態(tài)地編輯或是輸入文本字符串。 3、界面設計 (1)新建一個GUI界面 在MATLAB操作桌面上,單擊File → New → GUI選項,選擇Blank GUI(Default)模板,單擊“OK”按鈕,打開GUI設計窗口。 (2)添加控件 用鼠標從GUI設計窗口的組件面板中拖動滾動條(Slider),一個靜態(tài)文本(Static Text)一個編輯文本(Edit Text),3個命令按鈕(PushButton)控件。 (3)排列控件 選中兩個或兩個以上的需要排列的控件,使用幾何位置排列工具,排列圖標。
13、 (4)設置控件屬性 雙擊需要屬性設置的控件,打開對象屬性檢查器,設置控件屬性。 滾動條:BackgroundColor屬性修改為深藍色,Max屬性修改為10,Max屬性修改為0,其他為默認值。 編輯文本:String屬性修改為“數(shù)字顯示欄”,F(xiàn)ontUnits屬性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3。其他為默認值。 編輯文本:String屬性修改為“顯示”,其他屬性同上。 “初始化值”按鈕:String屬性修改為“初始化值”,Tag屬性修改為“run”,BackgroundColor屬性修改為綠色,F(xiàn)ontUnits屬
14、性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3。其他為默認值。 “stop”按鈕:String屬性修改為“stop”,Tag屬性修改為“stop”,BackgroundColor屬性修改為紅色,其他同上。 程序界面控件布置如圖 4、回調(diào)函數(shù)設置 各控件的回調(diào)函數(shù)Callback為對象被選中時執(zhí)行的函數(shù)。 在“初始化值”按鈕上點擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function run_Callback(hObject, eventdata, handles)后面添加
15、如下程序: set(handles.edit1,'String',num2str(get(handles.slider1,'Value'))); 在滾動條上點擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function slider1 _Callback(hObject, eventdata, handles)后面添加如下程序: set(handles.edit1,'String',num2str(get(handles.slider1,'Value'))) 在編輯文本上點擊右鍵,下拉菜單選擇View CallBacks → CallB
16、ack(回調(diào)函數(shù)), 在函數(shù)function edit1_ Callback(hObject, eventdata, handles)后面添加如下程序: val=str2double(get(handles.edit1,'String')); if isnumeric(val)&length(val)==1&val>=get(handles.slider1,'Min')&val<=get(handles.slider1,'Max') set(handles.slider1,'Value',val); else set(handles.edit1,'String','
17、no number') end 在“stop”按鈕上點擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function stop _ Callback(hObject, eventdata, handles)后面添加如下程序: close 5、 保存并運行GUI 單擊工具欄的運行按鈕,按照提示保存后,運行并驗證程序功能。 撥動滾動條,編輯文本內(nèi)顯示滾輪的當前數(shù)值;在編輯文本里輸入0~10任意一數(shù)字,滾動條的滾輪將移到該數(shù)字的位置。 如果在編輯文本內(nèi)輸入的數(shù)字不在0~10之間,編輯文本將提示“no number”;任何時刻單擊“初始化
18、值”按鈕,滾動條和編輯文本都歸零。 運行結(jié)果如圖所示。 一、圖形對象句柄函數(shù) 1.圖形對象句柄函數(shù) 函數(shù)名稱 說明 函數(shù)名稱 說明 gcf 獲得當前圖形窗口的句柄 gcbf 獲得當前正在調(diào)用的圖形的句柄 gca 獲得當前坐標軸的句柄 gco 獲得當前對象的句柄 gcbo 獲得當前正在調(diào)用的對象的句柄 函數(shù)名稱 函數(shù)格式 說明 delete delete(h) 刪除句柄所對應的圖形對象。h為對象句柄 close close(h) 關(guān)閉句柄所對應的圖形對象。h為對象句柄 findobj h=findobj(‘Pr
19、operName’, ‘P’) 查找具有某種屬性的圖形對象句柄。ProperName為對象的某一個屬性(通常使用tag),P為該屬性的屬性值,h為得到的句柄 get PropertyValue=get(handle, ‘Name’) 獲取指定圖形對象某個指定屬性的屬性值。其中handle為圖形對象的句柄、Name為某個屬性名稱、PropertyValue為返回的屬性值 set set(handle) 顯示指定圖形對象所有可設置的屬性名稱及其可能取值。handle為圖形對象的句柄 P=set(handle, ‘ProperName’) 顯示指定圖形對象某個屬性的取值。handl
20、e為圖形對象的句柄,ProperName為屬性,P為返回的屬性值 set(handle,‘Name1’,Value1,‘Name2’, Value2, ‘Name3’,Value3,...) 設置指定圖形對象的某個屬性。handle為圖形對象的句柄,Name1為某個屬性,Value1為設置的屬性值,其他參數(shù)相同 圖形對象屬性: 1.屬性名與屬性值 MATLAB給每種對象的每一個屬性規(guī)定了一個名字,稱為屬性名,而屬性名的取值稱為屬性值。 例如:LineStyle是曲線對象的一個屬性名,決定線形,可以是-、:、-.、--等。 注:屬性名的寫法不區(qū)分大小寫。此外,屬性名
21、要用單撇號括起來。 2.屬性的操作 ① set函數(shù)重設對象屬性,調(diào)用格式為: set(句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 其中句柄用于指明要操作的圖形對象。如果在調(diào)用set函數(shù)時省略全部屬性名和屬性值,則將顯示出句柄所有的允許屬性。 ② get函數(shù)獲取屬性值,調(diào)用格式為: V=get(句柄,屬性名) 其中V是返回的屬性值。如果在調(diào)用get函數(shù)時省略屬性名,則將返回句柄所有的屬性值。 例如,繪制正弦曲線, x=0:pi/10:2*pi; h=plot(x,sin(x)); set(h, 'Color', 'r', 'LineStyle', ':
22、', 'Marker', 'p'); col=get(h, 'Color'); 圖形窗口對象 建立圖形窗口對象使用figure函數(shù),其調(diào)用格式為: 句柄變量=figure(屬性名1,屬性值1,屬性名2,屬 性值2,…) MATLAB通過對屬性的操作來改變圖形窗口的形式。也可以使用figure函數(shù)按MATLAB缺省的屬性值建立圖形窗口:figure 或 句柄變量=figure 要關(guān)閉圖形窗口,使用close函數(shù),其調(diào)用格式為:close(窗口句柄) 另外,close all 命令可以關(guān)閉所有的圖形窗口,clf命令則是清除當前圖形窗口的內(nèi)容,但不關(guān)
23、閉窗口。 例3: 建立一個圖形窗口。該圖形窗口沒有菜單條,標題名稱為“我的圖形窗口”,起始于屏幕左下角、寬度和高度分別為300像素點和150像素點,背景顏色為綠色,且當用戶從鍵盤按下任意一個鍵時,將顯示“Hello,Kebord Key Pressed.”字樣。 命令如下: hf=figure('Color',[0,1,0],'Position',[1,1,300,150],... 'Name','圖形窗口示例','NumberTitle','off', 'MenuBar','none', ... 'KeyPressFcn', 'disp(''Hello,Keyboard Ke
24、y Pressed.'')'); 菜單 : MATLAB可以創(chuàng)建兩種菜單:下拉式菜單和上下文(即彈出式)菜單。 在GUIDE窗口中,單擊Tools→Menu Editor…選項、或者單擊工具欄中的菜單編輯器圖標 。在打開的菜單編輯器中,單擊 新菜單圖標,選中Untitled1菜單項。 Menu Bar選項卡 (1)Label:顯示菜單項的標識字符串,在標識字符串中的某字母前加&字符則定義一個快捷鍵,由〈Alt〉鍵+該字符來激活。 (2)Tag:菜單項的標識項。 (3)Accelerator:定義菜單項的熱鍵,與〈Ctrl〉鍵組合使用。 (4)Sepa
25、rator above this item:在當前菜單項前是否顯示一個分隔符,默認是不顯示。 (5)Check mark this item:在當前菜單項前是否顯示校驗標記,默認是不顯示。 (6)Enable this item:設置菜單項使能狀態(tài),默認是使能。 (7)Callback:設置菜單回調(diào)函數(shù)。 (8)More options:設置菜單屬性。單擊該按鈕,可打開菜單的屬性設置對話框。 Context Menus選項卡用于創(chuàng)建上下文(彈出式)菜單,多數(shù)是用鼠標右鍵單擊某個圖形對象時,在屏幕上彈出的菜單。 這種菜單出現(xiàn)的位置是不固定的,而且總是和某個圖形對象的UICont
26、extMenu屬性相聯(lián)系。 先創(chuàng)建上下文菜單,再將圖形對象的UIContextMenu屬性設置為菜單的標記。 另外,用戶可以使用或保留圖形窗口標準菜單。 在GUI設計窗口編輯區(qū)的空白處雙擊鼠標(不要選擇任何控件),打開圖形窗口的屬性列表,設置Menu Bar屬性為figure即可。 例4:現(xiàn)將例1里的按鈕y=sin(x)和按鈕y=cos(x)合并到Run按鈕,通過Run按鈕的上下文菜單來選擇y=sin(x) 和y=cos(x)。 跟我練: 題意分析 將按鈕y=cos(x)刪除,將按鈕y=sin(x)改做Run按鈕,同時在Run按鈕鏈接一個上下文菜單來實現(xiàn)原來的按鈕
27、y=sin(x)和按鈕y=cos(x)的繪圖功能。 創(chuàng)建菜單 打開菜單編輯器Menu Editor →上下文菜單Context Menus →點擊Untitled_1 →將UIContextMenu Property里的Tag修改為tu →點擊UIContextMenu里的Callback的View →編輯M文件,添加如下程序內(nèi)容: [x,map]=imread('flower.jpg'); imshow(x) 點擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項sin(x) →將UIContextMenu Property里的屬性
28、Label修改為sin (x)→屬性Tag修改為sin(x) →點擊Callback后的View →編輯M文件,添加如下程序內(nèi)容: x=0:0.01:2*pi; y=sin(x); plot(x,y) title('y=sin(x)'); xlabel('坐標x'); ylabel('坐標y'); 在默認情況顯示y=sin(x)曲線。 點擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項cos(x) →將UIContextMenu Property里的屬性Label修改為cos (x)→屬性Tag修改為cos(x) →點擊Callback后的View
29、 →編輯M文件,添加如下程序內(nèi)容: x=0:0.01:2*pi; y=cos(x); plot(x,y) title('y=cos(x)'); xlabel('坐標x'); ylabel('坐標y'); 界面設計 把例1的GUI設計窗口里y=cos(x)按鈕刪除。打開y=sin(x)按鈕的屬性編輯器Property Inspercter,將其String屬性改為Run;屬性UIContextMenu的屬性值改為tu,其他不變。 回調(diào)函數(shù)設置 在控件Run上單擊右鍵→View Callbacks,在函數(shù)function run_Callback(hObject, eve
30、ntdata, handles)后面添加如下程序: [x,map]=imread('flower.jpg'); imshow(x) 這樣當用戶點擊Run控件時,界面就會默認地顯示一張圖片 保存并運行GUI 單擊工具欄的運行按鈕,按照提示保存后,運行并驗證程序功能。 繼續(xù)在例4中添加一個菜單,改變背景顏色,若不合適就返回原來的顏色 打開菜單編輯器Menu Editor →菜單 Menu Bar →點擊Untitled_1 →將UIMenu Property里的Tag修改為color0 點擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項r
31、r →將UIMenu Property里的屬性Label修改為rr→屬性Tag修改為rr →點擊Callback后的View →編輯M文件,function rr_Callback(hObject, eventdata, handles) 添加如下程序內(nèi)容: set(gcf,'color','r') 點擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項g1 →將UIMenu Property里的屬性Label修改為g1→屬性Tag修改為g1→點擊Callback后的View →編輯M文件,function g1_Callback(hObject, eve
32、ntdata, handles) 添加如下程序內(nèi)容: set(gcf,'color',‘g') 點擊菜單編輯器Menu Editor的New Menu Item,→添加菜單子項re →將UIMenu Property里的屬性Label修改為re→屬性Tag修改為rr →點擊Callback后的View →編輯M文件,function kt8_1_OpeningFcn(hObject, eventdata, handles, varargin)添加如下程序內(nèi)容: xx=get(gcf,'color'); handles.xx=xx; 在function re_Cal
33、lback(hObject, eventdata, handles) 添加如下程序內(nèi)容: xx=handles.xx; set(gcf,'color',xx) 函數(shù)功能 函數(shù)格式 說明 打開文件 fname=uigetfile 列出當前目錄下MATLAB能識別的所有文件,fname為返回選定的文件名 uigetfile(‘FilterSpec’, ‘DTitle’) 列出當前目錄下由參數(shù)FilterSpec指定類型的文件,DTitle為打開對話框的標題 保存文件 [F,P]= uiputfile(‘InitFile’, ‘DTitle’) 顯示用于保存文件
34、的對話框,InitFile為保存類型,DTitle為對話框的標題。F為返回的文件名,P為文件路徑。F,P可缺省 顏色設置 uisetcolor(h, ‘DTitle’) 設置圖形對象的顏色。h為圖形對象句柄,DTitle為打開的顏色對話框標題 字體設置 uisetfont(h, ‘DTitle’) 設置文本字符串、坐標軸或控件的字體。參數(shù)同顏色設置 打印預覽 printpreview 當前圖形窗口的打印預覽對話框 打印設置 printdlg 當前圖形窗口的打印對話框 函數(shù)功能 函數(shù)格式 說明 幫助 helpdlg(‘string’,‘DTitle’) 顯
35、示幫助信息對話框。參數(shù)string為信息對話框,參數(shù)DTitle為對話框標題 錯誤信息 errordlg(‘string’,‘DTitle’) 顯示錯誤信息對話框。參數(shù)同幫助對話框 信息提示 msgbox(‘string’,‘DTitle’,‘icon’) 顯示信息提示對話框。參數(shù)icon用于指定圖標,有none(默認,無圖標)、error_help、warn、custom(用戶自定義)四種 問題提示 questdlg(‘string’,‘DTitle’, ‘str1’, ‘str2’, ‘str3’, ‘default’) 顯示問題提示對話框。參數(shù)str1、str2、 st
36、r3代表三個按鈕,default必須是這三個按鈕中的一個,表示默認選項 警告信息 warndlg(‘string’,‘DTitle’) 顯示警告信息對話框 進程條 waitbar(x ,‘DTitle’) 以圖形方式顯示運算或處理的進程。參數(shù)x為進程的比例長度,必須在0~1之間;參數(shù)DTitle為進程條標題 waitbar(x ,‘h’) 在同一進程條中,顯示進程的變化。參數(shù)h為進程條的句柄。常用在循環(huán)語句中 變量輸入 inputdlg(prompt ,DTitle, line ,def ,‘resize’) 顯示變量輸入對話框。參數(shù)prompt定義輸入窗口及顯示信息,
37、DTitle為對話框標題,line定義每個窗口的行數(shù),def為輸入的數(shù)據(jù),resize定義對話框大小是否可調(diào),可選on或off 將例4中的stop按鈕上添加一個停止對話框 編輯M文件function stop_Callback(hObject, eventdata, handles)添加如下程序內(nèi)容: hr=questdlg('親,你要停止嗎?','stop','no','yes',1) if hr=='yes' close else end 例5:做一個進程條,顯示進程速度,進程顯示完后,自動關(guān)閉 clear clc h=waitbar(0,正在計算,請等待..
38、...') for i=1:10000 waitbar(i/1000,h) end close(h) MATLAB圖形用戶界面設計 1. 建立用戶菜單 要建立用戶菜單可用uimenu函數(shù),因其調(diào)用方法不同,該函數(shù)可以用于建立一級菜單項和子菜單項。 建立一級菜單項的函數(shù)調(diào)用格式為: 一級菜單項句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 建立子菜單項的函數(shù)調(diào)用格式為: 子菜單項句柄=uimenu(一級菜單項句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 2. 快捷菜單 快捷菜單是用鼠標右鍵單擊某對象時在屏幕上彈出的
39、菜單。這種菜單出現(xiàn)的位置是不固定的,而且總是和某個圖形對象相聯(lián)系。 在MATLAB中,可以使用uicontextmenu函數(shù)和圖形對象的 UIContextMenu屬性來建立快捷菜單,具體步驟為: (1) 利用uicontextmenu函數(shù)建立快捷菜單。 (2) 利用uimenu函數(shù)為快捷菜單建立菜單項。 (3) 利用set函數(shù)將該快捷菜單和某圖形對象聯(lián)系起來。 例6: 繪制曲線y=2sin(5x)sinx,并建立一個與之相聯(lián)系的快捷菜單,用以控制曲線的線型和曲線寬度。 x=0:pi/100:2*pi; y=2*sin(5*x).*sin(x); hl=plot(x,y)
40、; hc=uicontextmenu; %建立快捷菜單 hls=uimenu(hc,'Label','線型'); %建立菜單項 hlw=uimenu(hc,'Label','線寬'); uimenu(hls,'Label','虛線','Call','set(hl,''LineStyle'','':'');'); uimenu(hls,'Label','實線','Call','set(hl,''LineStyle'',''-'');'); uimenu(hlw,'Label','加寬','Call','set(hl,''LineWidth'',2);')
41、; uimenu(hlw,'Label','變細','Call','set(hl,''LineWidth'',0.5);'); set(hl,'UIContextMenu',hc); %將該快捷菜單和曲線對象聯(lián)系起來 程序運行后,若將鼠標指針指向線條并單擊右鍵,則彈出快捷菜單。 1.建立控件對象 MATLAB提供了用于建立控件對象的函數(shù)uicontrol,其調(diào)用格式為: 對象句柄=uicontrol(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2,…) 其中各個屬性名及可取的值和前面介紹的uimenu函數(shù)相似,但也不盡相同,下面將介紹一些常用的屬性。 例7:在一個
42、圖形窗口中繪制一個正弦曲線,并設置一個文本框,通過顏色選擇對話框設置曲線及文本框內(nèi)文字的顏色。 跟我練: 本例用到了函數(shù)uisetfont,其調(diào)用格式: h=uisetfont(h1,'title') 利用函數(shù)uisetcolor設置顏色對話框,其調(diào)用格式: hc=uisetcolor(h,’title’) 利用函數(shù)設置控件: hm=uicontrol(Hf,'PropertyName1',value1,'PropertyName2',value2,...) 。 程序內(nèi)容: clear hf=figure('position',[300 100 500 400],'name
43、','uicontrol1','numbertitle','off'); ha=axes('position',[0.4 0.1 0.5 0.5],'box','on'); %設置曲線顏色 x=0:0.01:2*pi; y=sin(x); h1=plot(x,y); hc=uisetcolor(h1,'選擇曲線顏色'); %設置字體及顏色 htt=uicontrol(hf,'style','text','string','練習練習?','position',[80 120 100 60]); hc=uisetcolor(htt,'選擇字體顏色'); htt1=uisetfo
44、nt(htt,'字體選擇'); 例8、本例實現(xiàn)在界面上不斷顯示一系列的圖片 跟我練: 1、利用imread函數(shù)從當前路徑或搜索路徑下讀取圖片文件。 2、利用imshow函數(shù)顯示圖片 3、利用pause函數(shù)控制圖片顯示的頻率。 4、界面設計 (1)新建一個GUI界面 在MATLAB操作桌面上,單擊File → new → GUI選項,選擇Blank GUI(Default)模板,單擊“OK”按鈕,打開GUI設計窗口。 (2)添加控件 用鼠標從GUI設計窗口的組件面板中拖動坐標軸(Axes)和2個命令按鈕(pushbutton)控件。 (3)排列控件 選中兩
45、個命令按鈕(pushbutton)控件,使用幾何位置排列工具,排列圖標。 (4)設置控件屬性 雙擊需要屬性設置的控件,打開對象屬性檢查器設置控件屬性。 “圖片顯示”按鈕:String屬性修改為“圖片顯示”,Tag屬性修改為“show”,F(xiàn)ontUnits屬性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3。其他為默認值。 “STOP”按鈕:String屬性修改為“STOP”,Tag屬性修改為“stop”,F(xiàn)ontUnits屬性改為normalized,F(xiàn)ontWeight屬性改為bold,F(xiàn)ontSize屬性改為0.3,其他為默認值。界面布
46、置如圖所示: (5)回調(diào)函數(shù)設置 在“圖片顯示”按鈕上點擊右鍵,下拉菜單選擇View CallBacks → CallBack(回調(diào)函數(shù)), 在函數(shù)function show_Callback(hObject, eventdata, handles)后面添加如下程序: [X,map]=imrea d('pdh1.jpg'); X2=imread('pdh2.jpg'); k=1; for n=1:4 imshow(X,map) pause(1) imshow(X2) pause(1) end 在“STOP”按鈕上點擊右鍵,下拉菜單選擇View CallBa
47、cks → CallBack(回調(diào)函數(shù)), 在函數(shù)function stop_Callback(hObject, eventdata, handles)后面添加如下程序: close 6、 保存并運行GUI 單擊工具欄的運行按鈕,按照提示保存后,運行并驗證程序功能。 運行程序,點擊“圖片顯示”按鈕,運行結(jié)果如圖所示。 (二)、自己練習 1、使用matlab7的幫助系統(tǒng)學習圖形對象的Name和NumberTitle屬性,創(chuàng)建一個圖形,繪制曲線,其中。修改前邊所題的兩個屬性,使得圖形的標題為“圖形窗口”。 2、編制一個程序,使得“圖形”窗口的默認底色為橘黃色,默認的線寬為
48、4個像素,并繪制圖形。 3、使用matlab7的幫助系統(tǒng)學習Axes對象的CurrentPoint屬性的使用方法,并使用該屬性創(chuàng)建一個坐標軸對象,在該坐標軸內(nèi)用線將連續(xù)的鼠標單擊連接。使用waitforbuttonpress命令等待用戶的鼠標單擊,并在每次單擊之后刷新圖形,當按鍵盤上的任意鍵時終止程序。 4、創(chuàng)建一個GUI,使用一個彈出式控件來選擇GUI的底色。給該GUI添加一個菜單,該菜單有2個子菜單,可以選擇顏色和線型。 5、創(chuàng)建一個GUI,繪制曲線,該GUI將提示用戶輸入a,b,c,的值,并輸入x的取值范圍。 6、設計一個表現(xiàn)漸進過程的進程條。 7、不使用按鈕組,建立三個具有互
49、斥功能的單選按鈕?;コ夤δ芫褪前聪乱粋€按鈕,另外兩個按鈕彈起。 8、設計一個帶有繪圖、操作和退出菜單的圖形用戶界面,其中“繪圖”菜單中有“正弦曲線”和“余弦曲線”兩個子菜單,分別控制在圖形窗口畫出正弦和余弦曲線;“操作”菜單中有“添加網(wǎng)格”和“清除網(wǎng)格”兩個子菜單,用于添加和清除網(wǎng)格。單擊“退出”菜單出現(xiàn)一個問題提示對話框,有“是”,“否”兩個按鈕,單擊“是”按鈕退出系統(tǒng),單擊“否”按鈕不進行任何操作。 9、設計圖形用戶界面,在列表框中選擇函數(shù)類型(默認是正弦函數(shù))后,單擊“繪制圖形”按鈕,繪制出函數(shù)曲線,單擊“清除圖形”按鈕,清除曲線,但保留坐標軸。 10、設計圖形用戶界面。在幅值、頻
50、率輸入框中輸入數(shù)值后,單擊“繪制圖形”按鈕,繪制出正弦曲線;單擊“清除圖形”按鈕,清除曲線,保留坐標軸。如果沒有輸入幅值或頻率數(shù)值就單擊“繪制圖形”按鈕,不能繪制圖形,并彈出錯誤對話框。 11、仿真x(t)=sin(t)sin(10t) 的波形。 12、設計一個數(shù)字電路的8線----3線編碼器,并Simulink仿真。 13、練習書上例7-3 14、建立階躍信號 u(t-2) 積分運算仿真模型,并觀察信號波形。 15、仿真y(t)=sin(t)-sin(2t)的波形。 16、仿真函數(shù)sin(x)e-x 的波形。(提示:使用User-Defined Functions模塊庫下的Fcn模塊生成e-x). 四、思考題 1、什么是圖形句柄?圖形句柄有什么用途?如何設置和獲取指定句柄對象的屬性? 2、回調(diào)函數(shù)的用途是什么?如何設置? 3、簡述GUI控件的種類,其各自的功能是什么? 五、實驗要求 1.復習本章相關(guān)知識。 2.編寫程序,運行程序并記錄運行結(jié)果。 3.撰寫實驗報告。 15
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運動會安全工作預案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機關(guān)“弘揚憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學期初中歷史上冊教研組工作總結(jié)
- 2024年小學高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學期小學語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習整治報告
- 2025年學校元旦迎新盛典活動策劃方案
- 2024年學校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告