第八章GUI基础.docx

上传人:b****1 文档编号:10659499 上传时间:2023-05-27 格式:DOCX 页数:32 大小:73.49KB
下载 相关 举报
第八章GUI基础.docx_第1页
第1页 / 共32页
第八章GUI基础.docx_第2页
第2页 / 共32页
第八章GUI基础.docx_第3页
第3页 / 共32页
第八章GUI基础.docx_第4页
第4页 / 共32页
第八章GUI基础.docx_第5页
第5页 / 共32页
第八章GUI基础.docx_第6页
第6页 / 共32页
第八章GUI基础.docx_第7页
第7页 / 共32页
第八章GUI基础.docx_第8页
第8页 / 共32页
第八章GUI基础.docx_第9页
第9页 / 共32页
第八章GUI基础.docx_第10页
第10页 / 共32页
第八章GUI基础.docx_第11页
第11页 / 共32页
第八章GUI基础.docx_第12页
第12页 / 共32页
第八章GUI基础.docx_第13页
第13页 / 共32页
第八章GUI基础.docx_第14页
第14页 / 共32页
第八章GUI基础.docx_第15页
第15页 / 共32页
第八章GUI基础.docx_第16页
第16页 / 共32页
第八章GUI基础.docx_第17页
第17页 / 共32页
第八章GUI基础.docx_第18页
第18页 / 共32页
第八章GUI基础.docx_第19页
第19页 / 共32页
第八章GUI基础.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

第八章GUI基础.docx

《第八章GUI基础.docx》由会员分享,可在线阅读,更多相关《第八章GUI基础.docx(32页珍藏版)》请在冰点文库上搜索。

第八章GUI基础.docx

第八章GUI基础

网易 

新闻微博邮箱闪电邮相册有道手机邮印像派梦幻人生

 

更多

博客 

博客首页博客话题热点专题博客油菜地找朋友博客圈子博客风格手机博客短信写博邮件写博博客复制

摄影 

摄影展区每日专题

窗体顶端

搜博文 搜博客

窗体底端

随便看看

 

关注此博客

 

选风格不再艰难

搬家送Lomo卡片

退出( 0)xingshi3.. 

使用此风格

 消息 

短消息:

0评论:

0评论回复:

0留言:

0通知:

0

我的博客 

首页日志相册心情收藏音乐关于我

 

博客设置博客装扮

个人中心 

鸿星尔克大师赛开始倒计时,iPad、iPodnano等你来终结,赶快行动吧!

   显示下一条  |  关闭

北风之子-红色尖兵

 

导航

首页

日志

相册

音乐

收藏

博友

关于我

 

 

 

 

 

日志

 

 

massiach

 加博友已关注<取消

最新日志

可疑邮件的特征与处置

Fire and Ice

The River of Life

A Red ,Red Rose

07中国军事要闻(由CLJ友情

影响正常曝光的十大因素

博主推荐

相关日志

随机阅读

7大细节破译男人是否来电?

Selina剃头俞灏明植皮 偶像明星也难做

收租婆的忧伤谁人知?

应对极端寒冷天气小贴士

破解《黎明之前》口碑形成之谜

小远广播之孤独的战争(第95期)

首页推荐

日本鬼子被宅男美化

老外稀奇古怪的三轮

'青春美少女'变裸女

日本严惩火灾责任人

婚姻法欺负了女人?

请亚运为死难者默哀

更多>>

 

Matlab入门教程第七章Simulink基础

 

Matlab入门教程附录

(1)

Matlab入门教程第八章GUI程序设计

软件2007-06-1721:

06:

14阅读1812评论19  字号:

大中小 订阅

 

第八章MATLAB的GUI程序设计

Chapter8:

DesignofMATLABofGUIprogram

 

GUI(GraphicalUserInterfaces):

由各种图形对象组成的用户界面,在这种用户界面下,用户的命令和对程序的控制是通过“选择”各种图形对象来实现的。

基本图形对象分为控件对象和用户界面菜单对象,简称控件和菜单。

一.   控件对象及属性(Objectanditsattributesofcontroller))

1.GUI控件对象类型(Themodeofcontrollerobject)

控件对象是事件响应的图形界面对象。

当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback).

控件对象及其功能:

(表7—1)

2.    控件对象的描述(Descriptionofcontrollerobject)

  MATLAB中的控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应。

一种为静态控件,是一种不产生响应的控件,如文本框等。

  每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,既属性。

属性由两部分组成:

属性名和属性值,它们必须是成对出现的。

(1)按钮(PushButtons):

执行某种预定的功能或操作;

(2)开关按钮(ToggleButton):

产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback中的内容;

(3)单选框(RadioButton):

单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项;

(4)复选框(CheckBoxes):

单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项;

(5)文本编辑器(EditableTexts):

用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作;

(6)静态文本框(StaticTexts):

仅仅用于显示单行的说明文字;

(7)滚动条(Slider):

可输入指定范围的数量值;

(8)边框(Frames):

在图形窗口圈出一块区域;

(9)列表框(ListBoxes):

在其中定义一系列可供选择的字符串;

(10)弹出式菜单(PopupMenus):

让用户从一列菜单项中选择一项作为参数输入;

(11)坐标轴(Axes):

用于显示图形和图象

3.控件对象的属性(Attributesofcontrollerobject)

 用户可以在创建控件对象时,设定其属性值,未指定时将使用系统缺省值。

 两大类控件对象属性:

第一类是所有控件对象都具有的公共属性,第二类是控件对象作为图形对象所具有的属性。

A,控件对象的公共属性

Children取值为空矩阵,因为控件对象没有自己的子对象

Parent取值为某个图形窗口对象的句柄,该句柄表明了控件对象所在的图形窗口

Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象

Type取值为uicontrol,表明图形对象的类型

 

UserDate取值为空矩阵,用于保存与该控件对象相关的重要数据和信息

Visible取值为no或off,

B,控件对象的基本控制属性

BackgroundColor取值为颜色的预定义字符或RGB数值

Callback取值为字符串,可以是某个M文件名或一小段MATLAB语句,当用户激活某个控件对象时,应用程序就运行该属性定义的子程序。

Enable取值为on(缺省值),inactive和off

Extend取值为四元素矢量[0,0width,height],记录控件对象标题字符的位置和尺寸

ForegroundColor取值为颜色的预定义字符或RGB数值

Max,Min取值都为数值

String取值为字符串矩阵或数组,定义控件对象标题或选项内容

Style取值可以是pushbutton,radiobutton,checkbox,edit,text,slider,frame,popupmenu或listbox

Units取值可以是pixels,normalized,inches,centimeters或points

Value取值可以是矢量,也可以是数值,其含义及解释依赖于控件对象的类型

C,控件对象的修饰控制属性

FontAngle取值为normal,italic,oblique,

FontName取值为控件标题等字体的字库名

FontSize取值为数值,

FontWeight取值为points,normalized,inches,centimeters或pixels

HorizontalAligment取值为left,right,定义对齐方式

D,控件对象的辅助属性

ListboxTop取值为数量值

SliderStop取值为两元素矢量[minstep,maxstep],用于slider控件

Selected取值为on或off

SlectionHoghlight取值为on或off

E,Callback管理属性

BusyAction取值为cancel或queue

ButtDownFun取值为字符串,一般为某个M文件名或一小段MATLAB程序

Creatfun取值为字符串,一般为某个M文件名或一小段MATLAB程序

DeletFun取值为字符串,一般为某个M文件名或一小段MATLAB程序

HandleVisibility取值为on,callback或off

Interruptible取值为on或off

 

 

二.GUI开发环境(GUIDevelopmentEnvironment,GUIDE)

MATLAB提供了一套可视化的创建图形窗口的工具,使用用户界面开发环境可方便的创建GUI应用程序,它可以根据用户设计的GUI布局,自动生成M文件的框架,用户使用这一框架编制自己的应用程序。

MATLAB提供了一套可视化的创建图形用户接口(GUI)的工具,包括:

 

*布局编辑器(LayoutEdtor)-------在图形窗口中加入及安排对象。

布局编辑器是可以启动用户界面的控制面板,上述工具都必须从布局编辑器中访问,用guide命令可以启动,或在启动平台窗口中选择GUIDE来启动布局编辑器。

*几何排列工具(AlignmentTool)-----调整各对象相互之间的几何关系和位置

*属性编辑器(PropertyInspector)-----查询并设置属性值

*对象浏览器ObjectBrowser)-----用于获得当前MATLAB图形用户界面程序中所有的全部对象信息,对象的类型,同时显示控件的名称和标识,在控件上双击鼠标可以打开该控件的属性编辑器。

*菜单编辑器(MenuEditor)-----建立窗口菜单条的菜单和任何构成布局的弹出菜单

在MATLAB中,GUI的设计是以M文件的编程形式实现的,GUI的布局代码存储在M文件和MAT文件中,而在MATLAB6中有了很大的改变,MATLAB6将GUI的布局代码存储在FIG文件中,同时还产生一个M文件用于存储调用函数,在M文件中不再包含GUI的布局代码,在开发应用程序时代码量大大减少。

1.    布局编辑器(Layouteditor):

用于从控件选择板上选择控件对象并放置到布局区去,布局区被激活后就成为图形窗口。

在命令窗口输入GUIDE命令或点击工具栏中的guide图标都可以打开空白的布局编辑器,在命令窗口输入GUIDEfilename可打开一个已存在的名为filename图形用户界面。

 

(1)将控件对象放置到布局区

a.     用鼠标选择并放置控件到布局区内;

b.    移动控件到适当的位置;

c.    改变控件的大小;

d.    选中多个对象的方法;

(2)  激活图形窗口

    选Tools菜单中的ActivateFigure项或点击工具条上的ActivareFigure按钮,在激活图形窗口的同时将存储M文件和FIG文件,如所建立的布局还没有进行存储,用户界面开发环境将打开一个SaveAs对话框,按输入的文件的名字,存储一对同名的M文件和带有.fig扩展名的FIG文件。

(3)  运行GUI程序

   在命令窗口直接键入文件名或用openfig,open或hgload命令运行GUI程序。

(4)  布局编辑器参数设置

   选File菜单下的Preferences菜单项打开参数设置窗口,点击树状目录中的GUIDE,既可以设置布局编辑器的参数。

(5)  布局编辑器的弹出菜单

   在任一控件上按下鼠标右键,会弹出一个菜单,通过该菜单可以完成布局编辑器的大部分操作。

2.        几何位置排列工具(Alignmenttool)

   用于调节各控件对象之间的相对位置。

3.        用属性编辑器设置控件属性(SetattributesofcontrollerwithPropertyInspector)

   在属性编辑器中提供了所有可设置的属性列表并显示出当前的属性。

(1)属性编辑器(OpeningPropertyInspector):

三种方法:

1.用工具栏上的图标打开;2.从View菜单中选择PropertyInspector菜单项;3.在按鼠标右键弹出的PropertyInspector菜单中选择菜单项。

(1)  使用属性编辑器(UsingPropertyInspector)

a.     布置控件

b.    定义文本框的属性

c.    定义坐标系

d.    定义按钮属性

e.     定义复选框

4.        菜单编辑器(MenuEditor):

包括菜单的设计和编辑,菜单编辑器有八个快捷键,可以利用它们任意添加或删除菜单,可以设置菜单项的属性,包括名称(Label)、标识(Tag)、选择是否显示分隔线(Separatorabovethisitem)、是否在菜单前加上选中标记(Itemischecked)、调用函数(Callback)。

5.         对象浏览器(ObjectBrowsers):

用于浏览当前程序所使用的全部对象信息,可以在对象浏览器中选种一个或多个控件来打开该控件的属性编辑器。

三、GUI程序设计(GUIProgramdesign)

包括图形界面的设计和功能设计两个方面

例1:

用于绘图和图形旋转的GUI:

1、         布置控件:

一个坐标系、一个文本框、一个复选框,一个按钮

2、         定义文本框的属性:

String---简单设计示例,FontName---隶书,FontSize--22

3、         定义坐标系:

Visible—off,

4、         定义按钮属性:

String—绘图,FontName,ForegroundColor,ontSize,BackgroundColor,Callback---surf(peaks(30))

5、         定义复选框:

String—rotate3D,Callback—rotate3d

例2:

设计一个简单信号分析仪的程序,要求根据输入的两个频率和时间间隔,计算函数x=sin(2πf1t)+sin(2πf2t)的值,并对函数进行快速傅立叶变换,最后分别绘制时域和频域的曲线。

1.    设计图形界面(GUIDesign)

设计步骤:

(1)在布局编辑器中布置控件,

(2)使用几何位置排列工具对控件的位置进行调整;

(3)设计控件的属性;

(4)设置其他绘图属性。

2.    设置控件的标识(SettheTagofcontroller)

 控件的标识(Tag)是对于各控件的识别,每个控件载创建时都会由开发环境自动产生一个标识,在程序设计中,为了编辑、记忆和维护的方便,一般为控件设置一个新的标识。

本例设置第一个坐标轴的标识为:

frequency_axes,用于显示频域图形;第二个坐标轴的标识为:

time_axes,用于显示时域图形。

三个文本编辑框的标识为f1_input,f2_input,t_input,分别用于输入两个频率和自变量时间的间隔.

3.编写代码(Editcode)

GUI图形界面的功能,还是要通过一定的设计思路和计算方法,由特定的程序来实现。

为了实现程序的功能,还需要在运行程序前编写一些代码,完成程序中变量的赋值、输入输出、计算及绘图等工作。

一般方法为,内容为:

%

(1)设置对象的初始值;

%分别设置三个文本编辑框的初始值为:

f1_input=20

f2_input=50

f3_input=0:

0.001:

0.5

%

(2)编写代码:

%1)从GUI获得拥护输入的数据,本例中输入的三个数据

%分别为频率1、频率2和时间间隔。

f1=str2double(get(handles.f1_input,'String'));

 f2=str2double(get(handles.f2_input,'String'));

t=eval(get(handles.t_input,'String'));

%2)计算数据,计算函数值,按指定点进行快速傅立叶变

%换,并计算频域的幅值和频域分辨率。

x=sin(2*pi*f1*t)+sin(2*pi*f2*t);

y=fft(x,512);

m=y.*conj(y)/512;

f=1000*(0:

256)/512;

%3)在第一个坐标轴中绘制频域曲线。

axes(handles.frequency_axes)

plot(f,m(1:

257))

set(handles.frequency_axes,'XminorTick','on')

gridon

%4)在第二个坐标轴中绘制时域曲线。

axes(handles.time_axes) %选择适当的坐标轴

plot(t,x)

set(handles.time_axes,'XminorTick','on')

gridon

运行程序(Runningprogram)

 

例3:

制作一个曲面光照效果的演示界面,如图所示,三个弹出式菜单分别用于选择曲面形式、色彩图、光照模式和反射模式,三个滚动条用于确定光源的位置,一个按钮用于退出演示。

 

制作要点:

(1)建立一个静态文本,用于显示界面的标题:

光照效果演示;

(2)建立坐标轴对象,用于显示图形;

(3)建立四个下拉菜单,分别用于选择绘图表面的形状、色图、光照模式和反射模式,每个下拉菜单的上方都有一个静态文本用于说明菜单的作用;

(4)在一个frame上建立三个滑条用于确定光源的位置,并在frame上方加一说明;

(5)建立一个按钮用于退出演示;

 

callback函数的内容为:

functionvarargout=pushbutton1_Callback(h,eventdata,handles,varargin)

delete(handles.figure1)

%--------------------------------------------------------------------

functionvarargout=popupmenu1_Callback(h,eventdata,handles,varargin)

val=get(h,'value');

switchval

case1

   surf(peaks);

case2

   sphere(30);

case3

   membrane

case4

  [x,y]=meshgrid(-4:

.1:

4);

  r=sqrt(x.^2+y.^2)+eps;

  z=sinc(r);

  surf(x,y,z)

case5

  [x,y]=meshgrid([-1.5:

.3:

1.5],[-1:

0.2:

1]);

  z=sqrt(4-x.^2/9-y.^2/4);

  surf(x,y,z);

case6

  t=0:

pi/12:

3*pi;

  r=abs(exp(-t/4).*sin(t));

  [x,y,z]=cylinder(r,30);

   surf(x,y,z);

end

shadinginterp

light('Position',[-3-21]);

axisoff

%--------------------------------------------------------------------

functionvarargout=radiobutton1_Callback(h,eventdata,handles,varargin)

set(h,'value',1)

set(handles.radiobutton2,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton4,'value',0)

lightingflat

%--------------------------------------------------------------------

functionvarargout=radiobutton2_Callback(h,eventdata,handles,varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton4,'value',0)

lightinggouraud

%--------------------------------------------------------------------

functionvarargout=radiobutton3_Callback(h,eventdata,handles,varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton2,'value',0)

set(handles.radiobutton4,'value',0)

lightingphong

%--------------------------------------------------------------------

functionvarargout=radiobutton4_Callback(h,eventdata,handles,varargin)

set(h,'value',1)

set(handles.radiobutton1,'value',0)

set(handles.radiobutton3,'value',0)

set(handles.radiobutton3,'value',0)

lightingnone

 

%--------------------------------------------------------------------

functionvarargout=popupmenu2_Callback(h,eventdata,handles,varargin)

val=get(h,'value');

switchval

case1

   colormap(jet)

case2

   colormap(hot)

case3

   colormap(cool)

case4

   colormap(copper)

case5

   colormap(pink)

case6

   colormap(spring)

case7

   colormap(summer)

case8

   colormap(autumn)

case9

   colormap(winter)

end

%--------------------------------------------------------------------

functionvarargout=popupmenu3_Callback(h,eventdata,handles,varargin)

val=get(h,'value');

switchval

case1

   lightingflat

case2

   lightinggouraud

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2