图形用户界面(GUI)设计举例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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运行,可以得到如下图所示的界面表示:

相关文档
最新文档