图形用户界面(GUI)设计举例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形用户界面(GUI)设计举例
Tags: MATLAB图形用户界面GUI设计举例
Time : 2005-2-21 18:25:39 | Views : 756 | Font Size : Large Medium Small | Category : 毕业设计,留底回忆
前面我们已经大概的了解了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|bron ze|mauve|yellow|green','Callback',['Colornum=get(CBox,''value'');','set(Fun,''color'',ColorS tr(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运行,可以得到如下图所示的界面表示: