7.2 MATLAB学习笔记之图形用户及界面设计-菜单设计

菜单设计

MATLAB 用户菜单对象是图形窗口的子对象,所以菜单设计总在图形窗口中进行。

MATLAB 的图形窗口有自己的菜单栏,为了建立用户自己的菜单系统,可以先将图形窗口的 MenuBar 属性设置为none, 以取消图形窗口默认的菜单,然后再建立用户自己的菜单。

一、建立用户菜单

用户菜单通常包括一级菜单(菜单条)和二级菜单,有时根据需要还可以往下建立子菜单 (三级菜单等),每一级菜单又包括若干菜单项。要建立用户菜单可用uimenu 函数,因其调用方法不同,该函数可以用于建立一级菜单项和子菜单项。

建立一级菜单项的函数调用格式如下:

句柄变量=uimenu(图形窗口句柄,属性名1,属性值1,属性名2,属性值2,…)

建立子菜单项的函数调用格式如下:

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

这两种调用格式的区别在于,

  • 建立一级菜单项时,要给出图形窗口的句柄。如果省略了这个句柄,MATLAB 就在当前图形窗口中建立这个菜单项。如果此时不存在活动图形窗口, MATLAB 会自动打开一个图形窗口,并将该菜单项作为它的菜单对象。
  • 在建立子菜单项时,必须指定一级菜单项对应的句柄。

例如:

hm=uimenu(gcf,'Label','File');
hm1=uimenu(hm,'Label','Save');
hm2=uimenu(hm,'Label','Save As');

在这里插入图片描述

二、 菜单对象的常用属性

菜单对象除具有 Children 、Parent 、Tag 、Type 、UserData 、Visible 等公共属性外,还有一些常用的特殊属性。

(1)Label属性:该属性的取值是字符串,用于定义菜单项的名字。可以在字符串中加入& 字符,这时在该菜单项名字上,跟随&字符后的字符有一条下划线,&字符本身不出现在菜单项中。

对于这种有带下划线字符的菜单,可以用Alt 键加该字符键来激活相应的菜单项。

(2)Accelerator属性:该属性的取值可以是任何字母,用于定义菜单项的快捷键。如取字母W, 则表示定义快捷键为Ctrl+W。

(3)CallBack 属性:该属性的取值是字符串,可以是某个脚本文件名或一组MATLAB 命令。在该菜单项被选中以后,MATLAB 将自动调用此回调函数来作出对相应菜单项的响应,如果没有设置一个合适的回调函数,则此菜单项也将失去其应有的意义。

在产生子菜单时CallBack 属性也可以省略,因为这时直接打开下一级菜单,而不是侧重于某一操作。

(4)Checked 属性:该属性的取值是’on ‘或’off’ (默认值),该属性为菜单项定义一个指示标记,可以用这个特性指明菜单项是否已选中。

(5)Enable属性:该属性的取值是’on’(默认值)或’off’, 这个属性控制菜单项的可选择性。 如果它的值是’off’, 则此时不能使用该菜单。此时,该菜单项呈灰色。

(6)Position 属性:该属性的取值是数值,它定义一级菜单项在菜单条上的相对位置或子菜单项在菜单组内的相对位置。例如,对于一级菜单项,若 Position 属性值为1,则表示该菜单项位于图形窗口菜单条的可用位置的最左端。

(7)Separator 属性:该属性的取值是’on’或’off (默认值)。如果该属性值为’on’, 则在该菜 单项上方添加一条分隔线,可以用分隔线将各菜单项按功能分开。

例1 建立图形演示系统,系统菜单条中含有3个菜单项: Plot 、Option 和 Quit 。Plot 菜单项中有Sine Wave和 Cosine Wave两个子菜单项,分别控制在本图形窗口画出正弦和余弦 曲 线 。Option 菜单项的内容如图所示,其中Grid on和 Grid off子菜单项控制给坐标轴加 网格线,Box on和 Box off子菜单项控制给坐标轴加边框,而且这4项只有在画曲线时才是可 选的。Window Color子菜单项控制图形窗口背景颜色。Quit 菜单项控制是否退出系统。

img

screen=get(0,'ScreenSize');
W=screen(3);
H=screen(4);
figure('Color',[1,1,1],'Position',[0.2*H,0.2*H,0.5*W,0.3*H],...
    'Name','图形演示系统','NumberTitle','off','MenuBar','none')
%定义Plot菜单项
hplot=uimenu(gcf,'Label','&Plot');
uimenu(hplot,'Label','Sine Wave','Call',...
    ['t=-pi:pi/20:pi;','plot(t,sin(t));',...
    'set(hgon,''Enable'',''on'');',...
    'set(hgoff,''Enable'',''on'');',...
    'set(hbon,''Enable'',''on'');',...
    'set(hboff,''Enable'',''on'')'])
uimenu(hplot,'Label','Cosine Wave','Call',...
    ['t=-pi:pi/20:pi;','plot(t,cos(t));',...
    'set(hgon,''Enable'',''on'');',...
    'set(hgoff,''Enable'',''on'');',...
    'set(hbon,''Enable'',''on'');',...
    'set(hboff,''Enable'',''on'')'])
%定义Option菜单项
hoption=uimenu(gcf,'Label','&Option');
hgon=uimenu(hoption,'Label','&Grid on',...
    'Call','grid on','Enable','off');
hgoff=uimenu(hoption,'Label','&Grid off',...
    'Call','grid off','Enable','off');
hbon=uimenu(hoption,'Label','&Box on',...
    'separator','on','Call','box on','Enable','off');
hboff=uimenu(hoption,'Label','&Box off',...
    'Call','box off','Enable','off');
hwincor=uimenu(hoption,'Label','&Window Color','Separator','on');
uimenu(hwincor,'Label','&Red','Accelerator','r',...
    'Call','set(gcf,''Color'',''r'')')
uimenu(hwincor,'Label','&Blue','Accelerator','b',...
    'Call','set(gcf,''Color'',''b'')')
uimenu(hwincor,'Label','&Yellow','Call',...
    'set(gcf,''Color'',''y'')')
uimenu(hwincor,'Label','&White','Call',...
    'set(gcf,''Color'',''w'')')
%定义Quit菜单项
uimenu(gcf,'Label','&Quit','Call','close(gcf)')

三、快捷菜单

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

( 1 ) 利用uicontextmenu 函数建立快捷菜单。

( 2 ) 利用uimenu 函数为快捷菜单建立菜单项。

( 3 ) 利用set 函数将该快捷菜单和某图形对象联系起来。

例2 绘制曲线
y = 2 e − 0.5 x s i n ( 2 π x ) y=2e^{-0.5x}sin(2πx) y=2e0.5xsin(2πx)
,并建立一个与之相联系的快捷菜单,用以控制曲线的线型和曲线宽度。

程序如下:

x=0:pi/100:2*pi;
y=2*exp(-0.5*x).*sin(2*pi*x);
hl=plot(x,y);
hc=uicontextmenu;             		    %建立快捷菜单
hls=uimenu(hc,'Label','线型');    	%建立菜单项
hlw=uimenu(hc,'Label','线宽');
uimenu(hls,'Label','虚线','Call','set(hl,''LineStyle'','':'');')
uimenu(hls,'Label','实线','Call','set(hl,''LineStyle'',''-'');')
uimenu(hlw,'Label','加宽','Call','set(hl,''LineWidth'',2);')
uimenu(hlw,'Label','变细','Call','set(hl,''LineWidth'',0.5);')
set(hl,'UIContextMenu',hc)     		%将该快捷菜单和曲线对象联系起来

image-20241008114250322
程序运行后先按默认参数(0.5磅实线)画线,若将鼠标指针指向线条并右击,则弹出快捷菜单,选择菜单命令可以改变线型和曲线宽度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值