入门视频: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