matlab gui 图形界面 颜色控制Word文档下载推荐.docx
《matlab gui 图形界面 颜色控制Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《matlab gui 图形界面 颜色控制Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
,...
'
Callback'
set(Hl_line,'
Color'
)'
);
菜单项去能
改变对象uimenu的'
Enable'
值或'
Visible'
属性可使菜单项暂时去能。
属性通常设
为'
on'
。
当'
属性'
设为'
off'
时,标志字符串变灰,菜单项去能。
在这种状态下,菜单项保持可见但不能被选择。
此属性可用来将不恰当的菜单选择去能。
下面的例子(mmenu4.m)说明了用两个菜单项和'
属性来设定坐标轴的'
Box'
属性的另一种方法。
Hm_top=uimenu('
,Example'
Hm_boxon=uimenu(Hm_top,'
SetBoxOn'
...'
CallBack'
,[...
'
set(gca,'
),'
set(Hm_boxon,'
set(Hm_boxoff,'
]);
Hm_boxoff=uimenu(Hm_top,'
,SetBoxOff'
,...'
设定'
属性为'
,可将菜单项完全隐藏。
菜单项象是从屏幕中消失,而其它菜单项改变了在显示器上的位置以填补由当前不可见菜单造成的空隙。
然而,不可见的菜单仍然存在,而且uimenu对象
的'
Position'
属性值也不改变。
当属性'
又重新设为'
时,菜单项重新出现在正常的位置。
这个性质可以用来暂时地撤消一个菜单。
下面的例子(mmenu5.m)建立了两个顶层菜单和两个菜单项。
Hm_control=uimenu('
Control'
Hm_extra=uimenu('
Extra'
Hm_limit=uimenu(Hm_control,'
LimitedMenus'
,...
'
set(Hm_extra,'
Viseble'
Hm_full=uimenu(Hm_control,'
FullMenus'
当选择了LimitedMenus项时,Extra菜单就从菜单条中消失。
当选择了FullMenus项时,Extra菜单又重新显示在原来的位置的菜单条上。
回调属性
属性值是一个MATLAB字符串,MATLAB将它传给函数eval并在命令窗口工作空间执
行。
它对于函数M文件有重要的隐含意义,我们将在本章后面继续讨论这一属性。
因为'
属性必须是字符串,所以在字符号内多重MATLAB命令、后续行以及字符串都会使必需的句法变得十分复杂。
如果有不止一个命令要执行,命令间必须适当地分隔开来。
例如,
uimenu('
Test'
gridon;
把一个字符串传给eval,使命令
>
)
在命令窗口工作空间中执行。
这是合法的句法,因为命令用逗号或分号隔开,多重命令可输入到同一命令行中。
在定义回调函数时,也遵循MATLAB规定,即在已引用的字符串内,用两个单引号来表示单引号。
字符串可以串接起来生成一个合法MATLAB字符串,只要把它们括在方括号中。
>
,['
gridon,'
注意字符串'
gridon'
含有所需的逗号以分隔两个命令。
如果使用了续行号,上述命令可写为
'
...
]);
上例中命令行被分隔,每行的末尾加上了三个句号表示命令的继续。
注意到上列单行的所有元素都被保留,包括字符串分隔命令的逗号。
在'
gridon,…'
行中最后引号后的逗号是可选的;
下一行开始的空格起相同的作用。
欲了解详情,请参阅前面关于建立行向量的章节。
如果引号、逗号和括号不正确输入,MATLAB将给出警告;
但在复杂回调字符串中很难寻找错误
的。
为了使错误最少,对包含MATLAB语句的回调字符串请记住以下的一些规则:
把整个回调字符串括在方括号中,不要忘记最后的右括号'
)'
把各语句括上单引号。
已引用的字符串内,要用双引号。
如:
quoted'
:
a'
string'
;
Quote'
now'
。
在引号后要用逗号或空格结尾。
除了最后一句,各语句在引号内要以逗号或分号结尾;
有后续行的各行要以三个句号(...)结尾。
前面的例子之一mmenu4.m是所涉及的回调字符串句法的很好说明。
Hm_top=unimenu(Label'
Example'
HM_boxon=uimenu(Hm_top,...
Set'
Boxon'
set(gca,'
'
Box'
,'
on'
),'
set(Hm_boxon,'
Enable'
off'
set(Hm_boxoff,'
)'
];
Hm_boxoff=uimenu(Hm_top,...
SetBoxoff'
,'
set(Hm_boxoff'
上例中还引出了关于回调函数另一个重点,在变量Hm_boxoff定义之前,在回调串中用Hm_boxoff替代Hm_boxon。
因为回调串只是一个字符串,MATLAB不会给出警告,而且仅在uimenu被激活并将字符串传给eval时才由MATLAB执行。
它隐含有函数M文件的设计和测试,这将在本章后面讨论。
M文件的举例
下例将演示一组简单菜单的生成。
该例子包含在精通MATLAB工具箱的函数M文件mmenus中。
正如下面所示的那样,这个函数文件被分隔成了若干块,以便于讨论函数的各个方面。
首先,定义一个函数并在当前的图形中用顶层Line菜单建立菜单条,该菜单分别含有三个子菜单:
LineStyle,LineWidth,LineColor。
functionmmenus()
%MMENUSSimplemenuexample.
%MMENUSuseswaitforbuttonpressandgcoincallbackstrings
%tolettheusermakeamenuselectionandthenselectanobject
%byclickingonitwiththemouse.Thecallbackstringsthenuse
%thesetfunctiontoapplythepropertyvaluetotheselected
%object.
%Copyright(c)1996byPrentice-Hall,Inc.
Hm_line=uimenu(gcf,'
label'
.'
Line'
Hm_lstyle=uimenu(Hm_line,'
LineStyle'
Hm_lwidth=uimenu(Hm_line,'
Linewidth'
Hm_lcolor=uimenu(Hm_'
label,'
LineColor'
其次,使用waitforbuttonpress和gco得到当前对象的句柄,确认它为一个线对象,并采用适当的'
Linestyle'
值。
注意这些菜单项句柄以后不再使用,所以它们不必保存。
uimenu(Hm_lstyle,'
,Solid'
,('
waitforbuttonpress;
ifget(gco,'
type'
)=='
line'
set(gco,'
LineStyle'
-'
end'
,Dotted'
Type'
set(g