入門視頻:https://www.bilibili.com/video/av20999810?from=search&seid=13641596054754955985
1、打開matlab 的gui設計界面
在matlab控制窗口輸入guide,會出現guide窗口,根據需要選擇gui模板,可以選擇blank gui建立自己的界面。
2、設計自己的gui界面
構思自己的界面,並進行繪製,可根據自己的功能對控件進行拖拽排版。
控件屬性修改:
將控件拖至面板後,雙擊會彈出控件屬性檢查器,可根據需要進行修改
此處不懂的可以找視頻看一下
3、保存界面
點擊界面上的運行按鈕,可對界面進行保存(界面保存後,會生產.m(matlab程序)和.fig(圖形界面)文件),並預覽界面
保存後生成的兩個文件:
4、修改程序,實現功能
以顯示圖片爲例:
在gui界面拖入一個axes窗口
然後在系統的啓動函數中可加入圖片顯示,相當於界面吧,即不通過按鈕控制,直接顯示。
im2=imread('2.png'); %讀入圖片
axes(handles.axes2); %綁定顯示窗口(axes的名稱爲控件雙擊後的tag的名稱)
imshow(im2); %顯示圖片
colormap(handles.axes2,jet);
該方法即可將圖片加載在座標軸
座標軸如果不需要可以隱藏:
推薦博客:https://blog.csdn.net/shitao99/article/details/85882320
5、如何實現兩個gui界面的跳轉
可通過button按鈕實現
首先,在一個gui界面下建立一個button按鈕,修改string屬性,命名爲next
然後在控件上右鍵–查看回調–callback,會跳轉到callback函數
輸入以下代碼即可:
h=gcf; %獲得當前的figure對象的句柄值,即當前的gui界面
test2; %要跳轉的figure對象名字
close(h); %關閉當前的界面
6、如何實現圖像在matlab gui中的正常顯示?
matlab有兩種顯示圖像的方式:image和imshow
顯示圖像正常用imshow即可
im=imread('');
axes(handles.axes2); %給出顯示圖像的圖區
imshow(im)
imshow可正常顯示,image則需要colormap配合顯示。
imshow和image的異同: https://blog.csdn.net/zhuiyuanzhongjia/article/details/79621813
7、各控件編寫程序
推薦視頻: https://ke.qq.com/course/list/matlab gui
可根據視頻將主要控件的編寫方式模仿一下,在編寫自己的小程序
8、控制框提醒
當進行一些操作時,比如保存文件等,在界面上不會有顯示,此時可通過控制框進行提醒,操作已完成,防止無聊的等待。
msgbox('窗體顯示內容','窗體名稱,可爲空')
寫在callback函數裏即可
9、怎麼將一張圖片從一個ui傳遞給另一個ui?
第一種方法:將gui1的圖片保存,在gui2中讀取
第二種方法:http://blog.sina.com.cn/s/blog_4aee288a0100i4t9.html
通過全局變量和gui的output_function來傳遞參數
10、gui中怎麼將一張圖片進行任意角度的旋轉?
slider和edit控件的使用:
slider調整角度,edit顯示數值
%slider的callback函數
function slider3_Callback(hObject, eventdata, handles)
% hObject handle to slider3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%slider旋轉角度調整
sliderValue = get(handles.slider3,'Value');
sliderValue=int32(sliderValue*360);
set(handles.edit1,'string',num2str(sliderValue)); %slider將值傳遞給edit1進行顯示
%edit文本框中顯示slider的數值
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%edit1
set(handles.slider3,'Value',str2num(get(hObject,'string'))) %edit設定值由slider3傳遞
%獲取旋轉角度,進行圖片旋轉
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%旋轉
% msgbox('請確保已打開分割後的二值圖像','warning')
value=get(handles.slider3,'Value');
value=int32(value*360);
%imgdata=get(handles.imgdata);
%loadimage=getappdata(handles.figure1,'loadimage') %改成打開的圖片
axes(handles.axes1);
imgdata=imrotate(handles.imgdata,value);
imshow(imgdata);
handles.imgdata=imgdata;
guidata(hObject,handles)
11、從當前窗口獲取圖像並進行顯示
im=getframe(handles.axes1);
axes(handles.axes2);
imshow(im)
12、用matlab做GUI界面,並生成獨立的可執行程序
兩種方式:
1、通過matlab命令行窗口進行操作:https://blog.csdn.net/SoaringLee_fighting/article/details/79344468
2、通過depolytool命令:https://blog.csdn.net/heshiip/article/details/50751810