数字电路设计200例_MATLAB图形用户界面设计

MATLAB图形用户界面设计

图形用户界面 Graphical User Interface: GUI

终端用户和计算机进行信息交流的工具和方法

图形用户界面设计:定制具有图形用户界面的程序

1

大纲

设计内容:菜单设计、对话框设、用户界面设计

设计原则:

简单:界面直观简洁,避免数值

一致:开发风格一致,新界面与其他界面一致

习惯:用广泛熟悉的标志和符号

迅速:对用户的操作响应迅速

设计步骤:

明确设计任务

绘制草图

制作静态界面并检查

编写界面动态功能程序并检查

2

菜单设计

菜单(uimenu):以figure图形窗口对象作为“父对象”,从一批功能选项中浏览和选择某项功能

标准菜单

MenuBar属性:none 隐藏标准菜单

                        figure 显示标准菜单

   例:h_figure=figure

           set(h_figure,’menubar’,’none’)

           set(h_figure,’menubar’,’figure’)

           set(gcf,’menubar’,’figure’)

用户菜单的建立 uimenu

建立一级菜单项的函数调用形式为:

h1=uimenu(窗口句柄,'属性名1',属性值1,'属性名2',属性值2,...)

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

h2=uimenu(h1,'属性名1',属性值1,'属性名2,'属性值2,...)

注:默认排列在标准菜单右边;自制子菜单按照创建先后自上而下排列,简捷键“&”,快捷键“Accelerator”

菜单对象常用属性

Enable: on/off  启动或者禁止菜单功能

Position: 标量  指定菜单的相对位置,例如为1时在最左边

Separator:on/off 菜单中产生分隔效果

Visible: on/off 菜单是否可见

Parent: 对象句柄值 标明了菜单对象所在的图形窗口或其父菜单

Children:空矩阵或者句柄值向量,是由子菜单对象的句柄组成

Label:  string,   命名用户菜单项名称

Callback: string 可以是标准命令,或者在路径中可找到的m文件

例1

hfig = figure;set(hfig,'MenuBar','none');h_menu = uimenu(hfig,'label','&Color');h_submenu1 = uimenu(h_menu,'label','&Green',...    'Callback','set(gcf,''color'',''green'')');h_submenu2 = uimenu(h_menu,'label','&Black',...    'Callback','set(gcf,''color'',''black'')','Accelerator','b');

76a009779b08edaa5cef67e7caa132ba.png

3

准备

快捷菜单(右键菜单) uicontextmenu

具体步骤为:

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

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

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

注意:右键只有与相应的图形对象相关联

例2

t = (-5*pi:pi/40:5*pi)+eps;y = sin(t)./t;hline = plot(t,y); cm = uicontextmenu; %创建右键菜单 %制作具体菜单项uimenu(cm,'label','green','callback','set(hline,''color'',''g''),')uimenu(cm,'label','blue','callback','set(hline,''color'',''b''),')uimenu(cm,'label','red','callback','set(hline,''color'',''r''),')%定义相应的回调set(hline,'uicontextmenu',cm)

ff69aaccd9358c858d5dad190e7c826d.png

例3 

建立“图形演示系统”菜单。菜单条中含有3个菜单项:Plot、Option和Quit。Plot中有Sine Wave和Cosine Wave两个子菜单项,分别控制在本图形窗口画出正弦和余弦曲线。Option菜单项的内容:其中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','Callback',['t=-pi:pi/20:pi;',...    'plot(t,sin(t));','set([hgon,hgoff,hbon,hboff],''Enable'',''on'');']);uimenu(hplot,'Label','Cosine Wave','Call',['t=-pi:pi/20:pi;',...    'plot(t,cos(t));','set([hgon,hgoff,hbon,hboff],''Enable'',''on'');']);%定义Option菜单项hoption=uimenu(gcf,'Label','&Option');hgon=uimenu(hoption,'Label','&Grig on','Call','grid on','Enable','off');hgoff=uimenu(hoption,'Label','&Grig 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');hfigcor=uimenu(hoption,'Label','&Figure Color','Separator','on');uimenu(hfigcor,'Label','&Red','Accelerator','r','Call','set(gcf,''Color'',''r'');');uimenu(hfigcor,'Label','&Blue','Accelerator','b','Call','set(gcf,''Color'',''b'');');uimenu(hfigcor,'Label','&Yellow','Call','set(gcf,''Color'',''y'');');     uimenu(hfigcor,'Label','&White','Call','set(gcf,''Color'',''w'');');     %定义Quit菜单项uimenu(gcf,'Label','&Quit','Call','close(gcf)');

31645e00c7278de488a1eef99ecc4d42.png

例4 

绘制曲线 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);

4028346b50bda7076c27c95776fe12fd.png

4

对话框

4.1 Mesh设置

对话框的控件

 (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)。

用户界面设计

    图形界面控制面板

    属性编辑器

    事件过程编辑器

    菜单编辑器

    位置调整工具

例5 

建立数制转换对话框。在左边输入一个十进制整数和2~16之间的数,单击“转换”按钮能在右边得到十进制数所对应的2~16进制字符串,单击“退出”按钮退出对话框。

    程序如下: 

hf=figure('Color',[1,1,1],'Position',[200,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','输 入 框','BackgroundColor',[0 1 1]);uicontrol(hf,'Style','Text', 'Units','normalized',...  'Position',[0.51,0.8,0.45,0.1],'Horizontal','center',...  'String','输 出 框','BackgroundColor',[0 1 1]);uicontrol(hf,'Style','Frame', 'Units','normalized',...  'Position',[0.04,0.33,0.45,0.45],'BackgroundColor',[0 1 1]);uicontrol(hf,'Style','Text', 'Units','normalized',...  'Position',[0.05,0.6,0.25,0.1],'Horizontal','center',...  'String','十进制数','BackgroundColor',[1 1 0]);uicontrol(hf,'Style','Text', 'Units','normalized',...  'Position',[0.05,0.4,0.25,0.1],'Horizontal','center',...  'String','2~16进制','BackgroundColor',[1 1 0]);he1=uicontrol(hf,'Style','Edit','Units','normalized',...  'Position',[0.25,0.6,0.2,0.1]);he2=uicontrol(hf,'Style','Edit','Units','normalized',...  'Position',[0.25,0.4,0.2,0.1]);uicontrol(hf,'Style','Frame','Units','normalized',...    'Position',[0.52,0.33,0.45,0.45],'Back',[1,1,0]);ht=uicontrol(hf,'Style','Text','Units','normalized',...    'Position',[0.6,0.5,0.3,0.1],'Horizontal','center');COMM=['n=str2num(get(he1,''String''));',...    'b=str2num(get(he2,''String''));',...    'dec=trdec(n,b);','set(ht,''string'',dec);'];uicontrol(hf,'Style','Push','Units','normalized',...    'Position',[0.18,0.1,0.2,0.12],'String','转 换','Call',COMM);uicontrol(hf,'Style','Push','Units','normalized',...    'Position',[0.65,0.1,0.2,0.12],'String','退 出','Call','close(hf)');

程序调用了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;endk=k-1;strdec='';while k>=1            %形成某进制数的字符串    kb=p(k);    strdec=strcat(strdec,ch1(kb+1:kb+1));    k=k-1;enddec=strdec;

e6dda56f006b7964006e9aa23b6b27a3.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值