第 7章 MATLAB图形用户界面设计
7.1 菜单设计
7.2 对话框设计
7.3 用户界面设计工具
7.1 菜单设计
7.1.1 用户菜单的建立建立一级菜单项的函数调用形式为:
一级菜单项句柄 =uimenu(图形窗口句柄,属性名 1,属性值 1,属性名 2,属性值 2,… )
建立子菜单项的函数调用形式为:
子菜单项句柄 =uimenu(一级 菜单项句柄,属性名 1,属性值 1,属性名 2,属性值 2,… )
7.1.2 菜单对象常用属性菜单对象具有 Children,Parent,Tag,Type,UserData、
Visible等公共属性 。 除公共属性外,还有一些常用的特殊属性 。
例 7.1建立,图形演示系统,菜单 。 菜单条中含有 3个菜单项,Plot,Option和 Quit。 Plot中有 Sine Wave和 Cosine
Wave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线 。 Option菜单项的内容如图 7.1所示 。 其中
Grid on和 Grid off控制给坐标轴加网格线,Box on和
Box off控制给坐标轴加边框,而且这 4项只有在画有曲线时才是可选的 。 Figure Color控制图形窗口背景颜色 。
Quit控制是否退出系统 。
程序如下:
screen=get(0,'ScreenSize');
W=screen(3);H=screen(4);
figure('Color',[1,1,1],'Position',[0.2*H,0.2*H,0.6*W,0.4*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菜单项
7.1.3 快捷菜单在 MATLAB中,可以使用 uicontextmenu函数和图形对象的 UIContextMenu属性来建立快捷菜单,具体步骤为:
(1)利用 uicontextmenu函数建立快捷菜单 。
(2)利用 uimenu函数为快捷菜单建立菜单项 。
(3)利用 set函数将该快捷菜单和某图形对象联系起来 。
例 7.2 绘制曲线 y=2e-0.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); %将该快捷菜单和曲线对象联系起来
7.2 对话框设计
7.2.1 对话框的控件
(1)按钮 (Push Button)。
(2)双位按钮 (Toggle Button)。
(3)单选按钮 (Radio Button)。
(4)复选框 (Check Box)。
(5)列表框 (List Box)。
(6)弹出框 (Popup Menu)。
(7)编辑框 (Edit Box)。
(8)滑动条 (Slider)。
(9)静态文本 (Static Text)。
(10)边框 (Frame)。
7.2.2 对话框的设计
1,建立控件对象
MATLAB提供了用于建立控件对象的函数 uicontrol,其调用格式为:
对象句柄 =uicontrol(图形窗口句柄,属性名 1,属性值 1,
属性名 2,属性值 2,… )
其中各个属性名及可取的值和前面介绍的 uimenu函数相似,但也不尽相同,下面将介绍一些常用的属性 。
2,控件对象的属性
MATLAB的 10种控件对象使用相同的属性类型,但是这些属性对于不同类型的控件对象,其含义不尽相同 。
除 Children,Parent,Tag,Type,UserData,Visible等公共属性外,还有一些常用的特殊属性 。
例 7.3 建立数制转换对话框 。 在左边输入一个十进制整数和 2~ 16之间的数,单击,转换,按钮能在右边得到十进制数所对应的 2~ 16进制字符串,单击,退出,按钮退出对话框 。
程序如下:
hf=figure('Color',[0,1,1],'Position',[100,200,400,200],...
'Name','数制转换 ','NumberTitle','off','MenuBar','none');
uicontrol(hf,'Style','Text','Units','normalized',...
'Position',[0.05,0.8,0.45,0.1],'Horizontal','center',...
'String','输 入 框 ','Back',[0,1,1]);
uicontrol(hf,'Style','Text','Position',[0.5,0.8,0.45,0.1],...
'Units','normalized','Horizontal','center',...
'String','输 出 框 ','Back',[0,1,1]);
uicontrol(hf,'Style','Frame','Position',[0.04,0.33,0.45,0.45],...
'Units','normalized','Back',[1,1,0]);
uicontrol(hf,'Style','Text','Position',[0.05,0.6,0.25,0.1],...
'Units','normalized','Horizontal','center',...
'String','十进制数 ','Back',[1,1,0]);
uicontrol(hf,'Style','Text','Position',[0.05,0.4,0.25,0.1],...
'Units','normalized','Horizontal','center',...
程序调用了 trdec.m函数文件,该函数的作用是将任意十进制整数转换为 2~16进制字符串 。 trdec.m函数文件如下:
function dec=trdec(n,b)
ch1='0123456789ABCDEF'; %十六进制的 16个符号
k=1;
while n~=0 %不断除某进制基数取余直到商为 0
p(k)=rem(n,b);
n=fix(n/b);
k=k+1;
end
k=k-1;
strdec='';
while k>=1 %形成某进制数的字符串
kb=p(k);
strdec=strcat(strdec,ch1(kb+1:kb+1));
k=k-1;
end
dec=strdec;
例 7.4 建立图形演示对话框 。 在编辑框输入绘图命令,单击,绘图,按钮能在左边坐标轴得到所对应的图形,
弹出框提供色图控制,列表框提供坐标网格线和坐标边框控制 。
程序如下:
clf;
set(gcf,'Unit','normalized','Position',[0.2,0.3,0.65,0.35]);
set(gcf,'Menubar','none','Name','图形演示 ','NumberTitle','off');
axes('Position',[0.05,0.15,0.55,0.7]);
uicontrol(gcf,'Style','text','Unit','normalized',...
'Posi',[0.63,0.85,0.2,0.1],'String','输入绘图命令 ','Horizontal','center');
hedit=uicontrol(gcf,'Style','edit','Unit','normalized','Posi',[0.63,0.15,0.2,0.68],...
'Max',2); %Max取 2,使 Max-Min>1,从而允许多行输入
hpopup=uicontrol(gcf,'Style','popup','Unit','normalized',...
'Posi',[0.85,0.8,0.15,0.15],'String','Spring|Summer|Autumn|Winter');
hlist=uicontrol(gcf,'Style','list','Unit','normalized',...
'Posi',[0.85,0.55,0.15,0.25],'String','Grid on|Grid off|Box on|Box off');
hpush1=uicontrol(gcf,'Style','push','Unit','normalized',...
'Posi',[0.85,0.35,0.15,0.15],'String','绘 图 ');
uicontrol(gcf,'Style','push','Unit','normalized',...
'Posi',[0.85,0.15,0.15,0.15],'String','关 闭 ','Call','close all');
7.3 用户界面设计工具
7.3.1 图形界面控制面板
7.3.2 属性编辑器
7.3.3 事件过程编辑器
7.3.4 菜单编辑器
7.4.5 位置调整工具例 7.5 利用界面设计工具设计用户界面 。 具体要求是:
(1)在编辑框输入形成数据 z的命令,然后选择三个按钮中的一个,即可绘制出 z的图形 。
(2)选择弹出框中的某个色图,能及时地更改绘图的颜色 。
(3)在图形窗口缺省的菜单条上添加一个菜单项 Options,
Options下又有两个子菜单项 White和 Red,选中 White项时,图形窗口将变成白色,选中 Red项时,图形窗口将变成红色 。
操作步骤如下:
(1)打开图形界面控制面板,添加有关图形对象 。
(2)利用属性编辑器,设置图形对象的属性 。
(3)添加 Options菜单项 。