Matlab界面编程传统的有guide,现在matlab朝着appdesigner方向发展。这两种方法都是非常简单适合新手的,如果是一个未接触这方面的,我建议直接学APPdesigner,如果想了解更深入,可以尝试利用纯代码进行编程。
编程要点:
1. 需知道具体所需控件的名称;
2. 需要理解相对应控件的属性;
我就直接放大招,下图是是界面效果
%==================================说明====================================
% 遥感数据处理软件(待开发)
% 软件作用:处理遥感数据
%
% 作者:胡礼珍
% 单位:厦门大学联合遥感接收站
% 邮件:hulizhen@xmu.edu.cn
%
% Hf 图像句柄
% Hm1 1级菜单句柄
% Hm2 2级菜单句柄
% Hm3 3级菜单句柄
%==========================================================================
%% 清除
clear;close all;clc;
%%
%% 图形窗口
Hf = figure('Name','Dream It Possible',... % 属性:名字
'NumberTitle','off',... % 属性;去除figure编号
'Units','normalized',... % 属性:大小归一化
'MenuBar','none',... % 属性:去掉默认菜单栏
'Color',[238 106 80]/255,... % 属性:背景色
'NextPlot','add',...
'OuterPosition',[0.3 0.2 0.4 0.6]); % 属性:界面位置和大小
%% 新建菜单栏
% =======================创建自定义菜单对象01(文件)=======================
Hm1.Mn01 = uimenu(Hf,...
'label','文件(&F)'); % 属性:标签文件
Hm2.Sm11 = uimenu(Hm1.Mn01,'label','打开',...
'Callback',@Sm11_Callback);
Hm2.Sm12 = uimenu(Hm1.Mn01,'label','保存');
% =======================创建自定义菜单对象02(读取)=======================
Hm1.Mn02 = uimenu(Hf,...
'label','读取(&R)'); % 属性:标签读取
Hm2.Sm21 = uimenu(Hm1.Mn02,...
'label','SAR传感器'); % 属性;
Hm3.Sm211 = uimenu(Hm2.Sm21,...
'Callback',@Sm211_Callback,...
'label','海丝一号'); % 属性;
Hm3.Sm212 = uimenu(Hm2.Sm21,...
'label','Sentinel-1'); % 属性;
Hm2.Sm22 = uimenu(Hm1.Mn02,...
'label','光学传感器'); % 属性;
Hm3.Sm221 = uimenu(Hm2.Sm22,...
'label','海丝二号'); % 属性;
Hm3.Sm222 = uimenu(Hm2.Sm22,...
'label','Sentinel-2'); % 属性;
% =======================创建自定义菜单对象03(SAR)========================
Hm1.Mn03 = uimenu(Hf,...
'label','SAR(&S)'); % 属性:标签文件
Hm2.Sm31 = uimenu(Hm1.Mn03,...
'label','基本处理'); % 属性:
Hm3.Sm311 = uimenu(Hm2.Sm31,...
'label','多视'); % 属性:
Hm3.Sm312 = uimenu(Hm2.Sm31,...
'label','滤波');
Hm3.Sm313 = uimenu(Hm2.Sm31,...
'Callback',@Sm313_Callback,...
'label','伪彩色处理');
Hm2.Sm32 = uimenu(Hm1.Mn03,...
'label','反演'); % 属性:
Hm3.Sm321 = uimenu(Hm2.Sm32,...
'label','风速'); % 属性:
Hm3.Sm322 = uimenu(Hm2.Sm32,...
'label','海浪'); % 属性:
Hm3.Sm323 = uimenu(Hm2.Sm32,...
'label','内波'); % 属性:
Hm3.Sm324 = uimenu(Hm2.Sm32,...
'label','待定……'); % 属性:
Hm2.Sm33 = uimenu(Hm1.Mn03,...
'label','提取'); % 属性:
Hm3.Sm331 = uimenu(Hm2.Sm33,...
'label','水体'); % 属性:
Hm3.Sm332 = uimenu(Hm2.Sm33,...
'label','溢油'); % 属性:
Hm3.Sm333 = uimenu(Hm2.Sm33,...
'label','船只'); % 属性:
Hm3.Sm334 = uimenu(Hm2.Sm33,...
'label','待补充'); % 属性:
Hm2.Sm34 = uimenu(Hm1.Mn03,...
'label','干涉'); % 属性:
Hm3.Sm341 = uimenu(Hm2.Sm34,...
'label','DEM'); % 属性:
Hm3.Sm342 = uimenu(Hm2.Sm34,...
'label','DInSAR'); % 属性:
Hm3.Sm343 = uimenu(Hm2.Sm34,...
'label','PSInsAR'); % 属性:
Hm3.Sm344 = uimenu(Hm2.Sm34,...
'label','SBASInSAR'); % 属性:
% =======================创建自定义菜单对象04(光学)=======================
Hm1.Mn04 = uimenu(Hf,...
'label','光学(&O)'); % 属性:标签文件
Hm2.Sm41 = uimenu(Hm1.Mn04,'label','基本处理');
Hm3.Sm411 = uimenu(Hm2.Sm41,'label','滤波');
Hm3.Sm412 = uimenu(Hm2.Sm41,'label','去云处理');
% =======================创建自定义菜单对象05(工具)=======================
Hm1.Mn05 = uimenu(Hf,...
'label','工具(&T)'); % 属性:标签文件
Hm2.Sm51 = uimenu(Hm1.Mn05,...
'label','自动生成报表'); % 属性:
% =======================创建自定义菜单对象06(帮助)=======================
Hm1.Mn06 = uimenu(Hf,...
'label','帮助(&H)'); % 属性:标签文件
Hm2.Sm61 = uimenu(Hm1.Mn06,'label','联系',...
'Checked','Off','Callback', {@Sm61_Callback});
Hm2.Sm62 = uimenu(Hm1.Mn06,'label','日志');
这里面还有几个问题尚未解决:
1. Logo问题:就目前我知道用JavaFrame可以实现,但这种方法,matlab将来不再支持,可能会取消这个;
2. 数据之间传递: 不同figure数据传递,这个想用纯代码实现,没时间研究;
3.专业问题:干涉处理没有相关的插件、工具包;
4. 成像显示问题:成像效果,不如IDL语言、PS、ENVI、Arcgis软件,想放大那种长条形的的大型图片,matlab只是放大某一区域,好的显示效果应该是是先将整个图放大,直到填充满整个成像区域,然后在放大图片;
以上问题是我技能欠缺,各位有解决方法,还望告知!
本程序至是纯利用代码进行GUI界面编程,具体对应菜单调用的函数文件我就不公开了,粉丝们可以根据自己需求进行修改;
觉得有用就点个赞支持一下;
转载请说明出处!
路漫漫其修远兮,吾将上下而求索。