1.uimenu 菜单及设计

菜单是动态呈现的选择列表,它对应于相关方法(常称为命令)或GUI状态。菜单可以包含其他菜单或者菜单项,也可以包含菜单(即分层的菜单),表示可以执行的命令或所选择的GUI状态。菜单可以与应用程序的菜单栏相关,也可以漂浮在应用程序窗口之上,形成弹出式菜单。

1.1建立用户菜单

MATLAB的各个图形窗口有自己的菜单栏,包括File,Edit,Windows和Help等菜单项。为了建立用户自己的菜单系统,可以先将图形窗口的MenuBar属性事先设置为none,以取消图形窗口默认的菜单,然后再建立用户自己的菜单。要建立用户菜单可用uimenu函数,uimenu函数的调用格式为

H = uimenu(Hp,属性名1,属性值1,属性名2,属性值2, …)

其功能为创建句柄值为 Hm 的自定义的用户菜单。Hp为其父对象的句柄,属性名和属性值构成属性二元对,定义用户菜单的属性。

该函数可以用于建立一级菜单项和子菜单项。建立一级菜单项的函数调用格式为

一级菜单项句柄 = uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)

建立子菜单项的函数调用格式为

子菜单项句柄 = uimenu(一级菜单项句柄,属性名1,属性值1,属性名2,属性值2,…)

在MATLAB还可以进行隐藏和显示标准菜单的操作,其常用的指令如下:

创建图形窗: h= Figure;
隐去标准菜单使用命令: set(h, ‘MenuBar’, ‘none’); set( gcf , ‘menubar’ , menubar) ;
恢复标准菜单使用命令: set( gcf, ‘menubar’, ‘figure’)。

建立一个菜单系统

screen = get(0, 'ScreenSize');
W = screen(3);H= screen(4);
hf = figure( 'Color',[1,1,1],'Position',[1,1,0.4*W,0.3* H],...'Name','菜单示例','NumberTitle', 'off', 'MenuBar', 'none');
hfile= uimenu(hf, 'label','&文件');
hhelp= uimenu(hf, 'label','&帮助');
uimenu(hfile, 'label', '&新建','callback', 'disp("New Item")');
uimenu(hfile, 'label', '&打开','callback', 'disp( "Open Item")');
hsave = uimenu(hfile, 'label', '&保存','Enable', 'off');
uimenu(hsave, 'label', 'Text file', 'callback', 'k1 = 0;k2 = 1;file01;');
uimenu( hsave, 'label', 'Graphics file', 'callback', 'k1= 1;k2= 0;file10;');
uimenu(hfile, 'label', '&保存到','callback', 'disp("Save As Item")');
uimenu(hfile, 'label', '&退出','separator', 'on', 'callback', 'close(hf)');
uimenu(hhelp, 'label', '关于','callback',['disp( "Help Item");','set(hsave, "Enable", "on")']);

结果显示:

2.菜单对象常用属性

菜单对象除具有Children(子对象)、Parent(父对象)、Tag(标签)、Type(类型)、UserData(用户数据)、Enable(使能)和Visible(可见性)等公共属性,还有一些常用的特殊属性,如回调(Callback)属性和菜单名(Label)。另外,用户菜单的外观有四个属性:Position(位置) ,Separator(分隔线) ,Checked(检录符)和ForeGroundColor( 前景颜色)。

下图中列出了MATLAB 4.2版本中的uimenu对象的属性及其属性值。注意:带
有“*”的属性是非文件式的,使用时需加小心;在括号“{ }”内的属性值是默认值。


例 Callback 属性示例,在图形窗上自制一个名为Callback 的“顶层莱单项”,当用鼠标单击该菜单项时,将产生一个带分格的封闭坐标轴。通过本例说明回调属性的运作机理、用户顶层菜单项的制作、uimenu属性的设置方法以及复杂字符串的构成方法和注意事项。

在MATLAB指令窗中运行以下程序可产生带分格的封闭坐标轴:

grid on, set(gca, 'box', 'on')

在MATLAB指令窗中用以下eval指令可产生与上面相同的界面:

eval( 'grid on, set(gca, "box","on")')
  • 方法一:
uimenu( 'label', 'Callback ','Callback', 'grid on, set(gca, 'box','on')% 直接连续表示法
  • 方法二:
uimenu( 'Label', 'Example',...
%方括号续行号表示法'Callback',['grid on,',...'set(gca, "box", "on");'])
  • 方法三:
MnE = 'Example';
%串变量法
GB=['grid on,','set(gca, "box", "on"), '];
uimenu( 'Label', MnE, 'Callback' ,GB)
  • 方法四:
Mgui.Label = 'Example';
%构架法
Mgui.Callback = ['grid on; ', 'set(gca, "box","on");'];
uimenu( Mgui)

例 Position 和Separator属性示例,设计要求:把用户菜单Option设置为顶层的第三菜单项;下拉菜单被两条分隔线分为三个菜单区;最下菜单项又由两个子菜单组成。

程序命令如下:

figure
h_menu= uimenu( 'label' ,'Option' ,'Position' ,3);
h_subl = uimenu(h_menu, 'label', 'grid on', 'callback', 'grid on');
h_sub2 = uimenu(h_menu, 'label' ,'grid off','callback' ,'grid off');
h_sub3= uimenu(h_menu, 'label', 'box on','callback', 'box on','separator', 'on' );
h_sub4= uimenu(h_menu, 'label', 'box off', 'callback' ,'box off' );
h_sub5 = uimenu(h_menu, 'label', '颜色', 'Separator', 'on' );
h_subsubl = uimenu(h_sub5, 'label', '红色' ,'ForeGroundColor' ,'r','callback','set(gcf, "Color", "r")');
h_subsub2 = uimenu(h_sub5, 'label', '复位','callback' ,'set(gcf, "Color", "W")');




例 Checked 属性示例,当某菜单项被选中后,使该菜单项贴上检录符“√”。

程序命令如下:

figure
hm0=uimenu( 'label', 'option');
h1 = uimenu(hm0, 'label', '显示网格',...'callback',[...'grid on;',...'set(h1, "checked", "on");'....'set(h2, "checked", "off");'...]);
h2 = uimenu(hm0, 'label', '不显示网格',...'callback',[...'grid off;',...'set(h2, "checked", "on"),'...'set(h1, "checked", "off"),'...
]);



例 Enable 和Visible属性示例。

程序命令如下:

clc;clear;close all;
h_menu= uimenu( 'label' , 'option' );
h_sub1 = uimenu(h_menu, 'label', 'Axis on' );
h_sub2 = uimenu(h_menu, 'label' ,'Axis off','enable', 'off');
set(h_sub1, 'callback' ,['axis on;','set(h_sub1, "enable", "off");','set(h_sub2, "enable", "on")']);
set(h_sub2, 'callback' ,['axis off;','set(h_sub1, "enable", "on");','set(h_sub2, "enable","off")']);


1.2 上下文菜单的建立

用鼠标右键单击某对象时在屏幕上弹出的菜单叫作上下文菜单。这种菜单出现的位置是不固定的,而且总是和某个图形对象相联系。在MATLAB中,可以使用uicontextmenu函数和图形对象的UIContextMenu属性来建立上下文菜单,具体步骤如下:

  • 利用uicontextmenu函数建立上下文菜单,格式为

he= uicontextmenu:其功能建立上下文菜单,并将句柄值赋给变量hc。

  • 利用uimenu函数为上下文菜单建立菜单项,格式为

uimenu(‘上下文菜单名’,属性名,属性…):其功能为创建的上下文菜单赋值,其 中属性名和属性值构成属性二元对。

  • 利用set函数将该上下文菜单和某图形对象联系起来。

例 绘制曲线 y=3e-0.6x*sin(2 pix),并建立一个与之相联系的上下文菜单,用以控制曲线的线型和曲线宽度。

程序命令如下:

clc;clear;close all;
x = 0:pi/100:2*pi;
y = 3*exp(-0.6*x).*sin(2*pi*x);
h1 = plot(x,y);
hc = uicontextmenu;                 %建立上下文菜单
hls= uimenu(hc, 'Label', '线型');     %建立莱单项
hlw= uimenu(hc, 'Label', '线宽');
uimenu(hls, 'Label', '虚线', 'callback', 'set(h1, "LineStyle",":");');
uimenu(hls, 'Label', '实线', 'callback', 'set(h1, "LineStyle","-");');
uimenu(hlw, 'Label', '加宽', 'callback', 'set(h1, "LineWidth",2);');
uimenu(hlw, 'Label', '变细', 'callback', 'set(h1, "LineWidth",0.5);');
set(h1, 'UIContextMenu' , hc);%将该上下文菜单和曲线对象联系起来


uimenu 菜单及设计相关推荐

  1. html 后台参数attribute_平台管理后台与商家菜单资源管理:商家权限及其菜单资源管理设计...

    商家权限及其菜单资源管理设计 在商家的菜单体系中,我们设计了一个三级菜单,分别为分类.模块和资源.其中,分类菜单是顶级菜单,表示一个微服务应用;模块菜单是一个二级菜单,表示一个应用功能(实体)的主页; ...

  2. UI实用素材|下拉菜单细节设计,分层呈现

    下拉菜单是UI设计,网页设计中的基础控件,也是平时大家做设计时会用到的常用组件,所以有必要对它进行全面深入的了解. 下拉式菜单 下拉菜单概念 下拉菜单在UI设计领域经常饱受批评,但这也不是没有理由的. ...

  3. HTML5导航栏菜单的设计与实现

    <html><head><meta charset="utf-8"><title>导航栏菜单的设计与实现</title> ...

  4. Linux - 可视化菜单界面设计

    优化屏幕刷新 问题 刷新多个窗体需要一些繁琐,在一个慢速的链接上,屏幕的绘制相当的慢 目标就是要尽量减少要在屏幕上的绘制的字符数 基本函数 int wnoutrefresh(WINDOW *windo ...

  5. CSS之咖啡菜单网页设计

    今天记录学习的设计网站首页的咖啡菜单,综合运用所学习的html,css背景,文本,字体,链接,表格,盒子,选择器,定位,以及css3的阴影,圆角边框,2d变换等内容. ㈠咖啡菜单整体样式 运用html ...

  6. 一个开源经典的MCU菜单框架设计

    来源:嵌入式专栏 不知道有多少人折腾过液晶显示的菜单,我觉得很多人都应该搞过,我还记得以前大学参加电子设计竞赛获奖的作品,我就用到了一个12864,里面有菜单功能. 以前可能觉得菜单高大上,其实并不是 ...

  7. 一个产品级MCU菜单框架设计

    关注+星标公众号,不错过精彩内容 转自 | 嵌入式云IOT技术圈 微信公众号 | 嵌入式专栏 不知道有多少人折腾过液晶显示的菜单,我觉得很多人都应该搞过,我还记得以前大学参加电子设计竞赛获奖的作品,我 ...

  8. 【MATLAB】UIMENU菜单的应用

    目录 UIMENU菜单的应用 UIMENU菜单的应用 h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例' ...

  9. ABP +VUE Elment 通用高级查询(右键菜单)设计+LINQ通用类Expression<Func<TFields, bool>>方法

    ABP +VUE Elment 通用高级查询(右键菜单)设计+LINQ通用类Expression 1. 目前需要用VUE实现源cs系统报表的右键菜单所有和自定义查询功能. 1.1 CS端的右键菜单效果 ...

最新文章

  1. tomcat8 启动项目pom.xml配置
  2. Android之----Log详解(Log.v,Log.d,Log.i,Log.w,Log.e)
  3. lemur run PLSA
  4. java面向对象的理解_java胜于C语言,却又静态面向对象,简单?
  5. 数据结构-第10周作业(二叉树的创建和遍历算法)
  6. 数据采集与清洗基础习题(四)Pandas初体验,头歌参考答案
  7. 锐道发布Dorado Dorado7标准件 -1.0.24 beta版
  8. 0基础尝试实现UnityURP渲染管线的AdditionalLit(点光源,聚光灯)非平行光的光照模型代码
  9. Google的通用翻译机能成为未来的巴别鱼吗?
  10. rsa私钥 txt转化为pem格式
  11. 使用NoneBot2可视化平台搭建QQ聊天机器人:本地和云部署教程
  12. 终于搞懂了el-dialog属性modal-append-to-body,append-to-body的作用【图解】
  13. 【xsy2440】【GDOI2016】疯狂动物城
  14. 《SPSS统计分析与行业应用实战》之ROC曲线案例
  15. 图网络算法——概率图介绍与贝叶斯网络
  16. 阿里分布式开放消息服务(ONS)原理与实践——笔记整理
  17. c++ ---- 递归
  18. 解决jmeter进行分布式测试,远程机器来运行脚本,在察看结果树中的响应数据项为空白?
  19. 学会了C语言可以开发出很多东西吗?
  20. BlackHat上的工控蠕虫病毒 绿盟科技工控研究员用SCL语言编写实现 录像让你亲眼看看...

热门文章

  1. bp暴力破解(转载)
  2. 计算机导论二进制小数乘法,二进制计算
  3. 海盗喝啤酒问题Java解法
  4. 计算火车运行时间 本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间
  5. 末日启示:向死而生--《罗辑思维》第一季第一期
  6. 借用 potplayer 播放器,在本地播放 b 站视频也能看弹幕了
  7. 腕能助手android9,篮球教学助手安卓版
  8. ubuntu设置共享文件夹
  9. Mendeley中WordPlugin问题
  10. 计算机中怎样重新安装ps,【2人回答】电脑要重装系统,不想重装Photoshop CS6,怎么办?-3D溜溜网...