YGZ
查看YGZ的博客
金钱 | : 1625 |
Level | : 0 |
发帖数 | : 227 |
最后登陆 | : 2019/1/21 |
注册时间 | : 2004/10/6 |
|
图形用户界面(GUI)设计举例 Tags: MATLAB MATLAB 图形用户界面 图形用户界面 GUI GUI 设计举例 设计举例 前面我们已经大概的了解了MATLAB环境下的图形用户界面(GUI)设计,下面便通过具体的例子来演示在MATLAB环境下图形用户界面设计的方法与思想。 MATLAB的图形用户界面设计实际上是一种面向对象的设计方法。假设想建立一个图形界面来显示和处理二维图形的颜色、线型及数据点的图标。要求其基本功能是: (1)建立一个主坐标系,用来显示要绘制的二维图形; (2)建立一个列表框,允许用户选择不同的着色方法; (3)建立一组按扭,用于处理二维图形线型和数据点的图标; (4)为图形界面加入菜单项,用于决定坐标轴是否显示及坐标轴上是否需要网格; (A)最初图形界面的设想如下图所示:
(B)根据上面的设想,下面我们就来制作它的图形用户界面: 首先,我们先来看其图形窗口的设置。在MATLAB命令窗口中选择菜单可获得一个标准MATLAB的图形窗口,但我们可采用如下命令使得打开窗口的形式更富于变化: 窗口句柄=figure(属性1,属性值1,属性2,属性值2,……); 通过这样的方式可以很容易地打开一个新的图形窗口,并返回该窗口的句柄,以后我们可以方便地对它进行进一步修正,窗口的属性诸如颜色(Color),标题名(Name)、位置(Position)等,都可根据需要设定。若要改变窗口的某些属性,则可通过调set()函数来完成。这样我们就得到其窗口生成的程序如下: yWin=figure('Position',[100,100,410,310],'Name','对MATLAB绘图功能选项的演示(2003/3/21)','Menubar','none', 'Resize','off','pointer','custom', 'numbertitle','off'); 接下来我们看起菜单项的加入。我们已建立了一个图形窗口,下面给它加入菜单项。 菜单设置是由uimenu()函数来完成的,该函数调用格式为: 菜单项句柄=uimenu(窗口句柄,属性1,属性值1,属性2,属性值2,……); 还可在某一个菜单条下定义一个新的子菜单条: 子菜单句柄=uimenu(菜单项句柄,属性1,属性值1,属性2,属性值2,……); uimenu()函数的属性最基本的有: 提示名称(Label):可以是任意一个字符串,在菜单项提示的字符串中允许使用下划线&标志,这样可用键盘容易地激活相应的菜单项。 回调函数(Call):可以是一个函数名称(用引号括起),也可以是一组MATLAB命令。在该菜单条被选中后,MATLAB自动调用此回调函数来做出菜单项的响应,实现某一功能。在产生下拉菜单时“call”选项可省略,因为这时可以直接打开下一级菜单,而不是侧重对某一函数进行响应。其菜单项生成的程序如下: ymenu001=uimenu(yWin,'label','Grid'); ymenu0011=uimenu(ymenu001,'label','Grid on','callback','Grid on'); ymenu0011=uimenu(ymenu001,'label','Grid off','callback','Grid off'); ymenu002=uimenu(yWin,'label','Axes'); ymenu0021=uimenu(ymenu002,'label','Axes on','callback','set(gca,''visible'',''on'')'); ymenu0021=uimenu(ymenu002,'label','Axes off','callback','set(gca,''visible'',''off'')'); 其次我们再来设定其控件设计技术。MATLAB提供uicontrol命令来实现控件设计。在图形窗口或对话框窗口上的各种控件均可以由该命令实现。用Chandle=uicontrol(窗口句柄,‘属性名’,属性值设置,……); 设置的属性值在窗口句柄所指的窗口中实现一个控件。其程序如下: CBox=uicontrol(yWin,'style','listbox','Position',[15,240,80,45],'String','red|blue|black|bronze|mauve|yellow|green','Callback',['Colornum=get(CBox,''value'');','set(Fun,''color'',ColorStr(Colornum))']); pushbutton1=uicontrol(yWin,'style','pushbutton','Position',[15,20,80,20],'String','实 线',... 'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(1)))']); pushbutton2=uicontrol(yWin,'style','pushbutton','Position',[15,50,80,20],'String','虚 线',... 'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(2)))']); pushbutton3=uicontrol(yWin,'style','pushbutton','Position',[15,80,80,20],'String','星 号',... 'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(3)))']); pushbutton4=uicontrol(yWin,'style','pushbutton','Position',[15,110,80,20],'String','圆 圈',... 'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(4)))']); pushbutton5=uicontrol(yWin,'style','pushbutton','Position',[15,140,80,20],'String','五角星',... 'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(5)))']); pushbutton6=uicontrol(yWin,'style','pushbutton','Position',[15,170,80,20],'String','十字号',... 'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(6)))']); pushbutton7=uicontrol(yWin,'style','pushbutton','Position',[15,200,80,20],'String','六角星',... 'Callback',['Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(7)))']); 最后我们再来看窗口建立时的初始化程序: yAxes=axes('Box','on','Units','points','Position',[100,20,190,200]); ColorStr=['r','b','k','c','m','y','g']; LineStr=['-',':','*','o','p','+','h']; Colornum=1; x=0:0.1:2*pi; Fun=plot(x,sin(x),union(ColorStr(Colornum),LineStr(1))); 编写完程序后保存为mydraw.m运行,可以得到如下图所示的界面表示:
总结: 通过MATLAB的图形用户界面设计,我们可以开发出很友好的交互式图形界面和各种有效的工具及应用程序。总之生成用户图形界面的几点理由为: * 编写一个多次反复用的实用函数,菜单、按钮、文本框作为输入方法具有意义; * 编写函数或开发应用程序供别人使用; * 创建一个过程、技术或分析方法的交互式示例; * 认为GUI的简洁,性能良好,并且想实践一下。
|