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界面编程,具体对应菜单调用的函数文件我就不公开了,粉丝们可以根据自己需求进行修改;
觉得有用就点个赞支持一下;
转载请说明出处!
路漫漫其修远兮,吾将上下而求索。