matlab gui界面設計記錄


  • 我們要進行的程序是彩色圖像處理試驗示例,用這個程序來練習我們的gui前台設計。

    程序功能介紹:具有彩色圖像處理及保存和音樂播放功能效果如下圖

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  • 2

    在MATLAB的命令窗口中輸入guide命令,打開guidequick start窗口,選擇create new gui   點ok 生成新的fig文件如下圖:

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  • 3

    右點窗口 ,打開屬性設置修改figur窗口名字,點name項就可以改 我們改為xiaobotest.fig,而后我們在窗口中拖進來,和幾個按紐用於交互程序的事件觸發,做成前台如下圖

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  • 4

    前台部分 接下來我們還要進行窗口菜單的制作,點tools選擇menu editor 

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    接上面的操作出現一個窗口 點new menu ,選中這個項 接着再點new menu就可以為它加目錄項了 ,選中untiled1 可以看到它的屬性 可以修改了label 是用於顯示文字說明用的 tag相當於句柄一樣用於操作的 下面我們改打開表項的 tag 值為open 如下圖 

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    經過上面的幾步操作 就完成菜單制作,功能上就具有 打開文件 保存  音樂播放 停止等如下圖

    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    下面進行各各菜單項的事件操作,點view(查看)就可以打開callback函數

    function openfile_Callback(hObject, eventdata, handles)這個就是打開操作對應的函數  我們加入如下代碼 

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    后的各各操作如同上面一樣 加入一下代碼 分別為保存rgb操作圖片和hsi操作圖片

    function savergb_Callback(hObject, eventdata, handles)

    function savehsi_Callback(hObject, eventdata, handles)

     

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    對於按紐操作,例如 rgb直方圖操作 我們把放到rgb直方圖上點右鍵如下圖代碼如下

    function pushbuttonrgb_Callback(hObject, eventdata, handles)

     

     

     

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    技術細節說明:

    其中實現菜單可選不可選用的是

    set(handles.savefile,'Enable','off');

    set(handles.savergb,'Enable','off');

    set(handles.savehsi,'Enable','off');

    set(handles.saveph,'Enable','off');

    set(handles.savejr,'Enable','off');

    其中savefile是保存菜單的tag值,比如我們操作了直方圖就可以在顯示后執行如下代碼

    set(handles.savefile,'Enable','on');

    set(handles.savergb,'Enable','on');

    這樣就可以實現菜單的冗余操作了

    全部操作后的效果如下圖:

    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    特別說明:在菜單選項中加入音樂播放功能

    打開制作好的音樂功能菜單的並修改callback函數

    function start_Callback(hObject, eventdata, handles)

    % hObject    handle to start (see GCBO)

    % eventdata  reserved - to be defined in a future version of MATLAB

    % handles    structure with handles and user data (see GUIDATA)

    [y,Fs,bits] = wavread('dl.wav');   %獲取音樂數據

    ao = analogoutput('winsound');  %建立硬件對象

    addchannel(ao,[1 2]);                %創建聲音輸出通道

    set(ao,'SampleRate',Fs)           %設置采樣率

    data1 =y(:,1);                            %雙聲道

    data2 =y(:,2);

    putdata(ao,[data1 data2]);   %往聲卡堆音樂數據

       %輸出音樂數據

       setappdata(handles.figure1,'ao',ao);

      

    start(ao);  

     

     

    % --------------------------------------------------------------------

    function pause_Callback(hObject, eventdata, handles)

    % hObject    handle to pause (see GCBO)

    % eventdata  reserved - to be defined in a future version of MATLAB

    % handles    structure with handles and user data (see GUIDATA)

    ao=getappdata(handles.figure1,'ao');

     

    stop(ao);

    運行的界面如下圖:可以選擇停止播放,或者在音樂放完后可以再點播放接着聽音樂,放松工作時間啊

  •  

    菜單項目的功能有打開,和保存兩個打開是打開圖片,保存是保存你處理的各種圖像,沒有打開圖像前保存菜單是不可選的,這四種處理沒有相應的處理時也是不可選的如下圖

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    點RGB直方圖均衡button可以看到顯示到了相應位置上,此時保存菜單里的保存RGB直方圖均衡圖像可以選擇

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  •  

    程序完整的運行效果如下圖,保存hsi直方圖到桌面操作

    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
    matlab交互式程序設計示例:[6]GUI界面編程1
  • 到此,整個matlab gui 界面設計就完成了,本人記錄的筆記僅供參考,有什么錯誤之處,還望指出。 


  • 免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM