《matlabGUI图形设计.ppt》由会员分享,可在线阅读,更多相关《matlabGUI图形设计.ppt(46页珍藏版)》请在三一办公上搜索。
1、2023/11/8,1,第9章 GUI图形设计,教学目标 教学重点 教学过程,2023/11/8,2,教学目标,本章所描述的图形用户界面的功能,它让用户定制用户与MATLAB 7的交互方式。从而提供一种命令窗口之外的与MATLAB 7的交互方式。用户将学习句柄图形的使用。并掌握图形用户界面特性(包括菜单、上下文菜单、按钮、滚动条、单选按钮、弹出式菜单和列表框等),并掌握如何编制GUI程序。,2023/11/8,3,教学重点,句柄图形对象图形框架窗口对象GUI对象的创建GUI的编程方法GUI控件的使用,2023/11/8,4,教学过程,句柄图形对象的基本知识图形框架窗口对象的基本内容图形对象属性
2、的获取和设置图形对象的操作GUI的基本知识GUI对象的创建方法GUI的编程方法GUI的M文件GUI控件的使用,2023/11/8,5,1.句柄图形对象,图形框架窗口对象(Figure)图形对象属性的获取和设置 图形对象的操作,2023/11/8,6,(1)图形框架窗口对象(Figure),绘制图形的图形框架窗口对象 核心(Core)对象 绘图(Plot)对象 注释对象,2023/11/8,7,窗口对象,图形框架窗口对象是MATLAB 7显示图形的窗口,包括菜单、工具栏、交互式对象、弹出式菜单、坐标、坐标轴子对象以及其他的图形对象。MATLAB 7对一次打开的图形数目没有限制(用户的计算机系统可
3、能会做出限制)。在MATLAB 7中,图形框架窗口对象有两条特殊的作用。包含数据图形;包含图形用户界面操作GUI。,2023/11/8,8,绘制图形的图形框架窗口对象,MATLAB 7语言中实现句柄访问的函数,2023/11/8,9,核心(Core)对象,核心对象包括直线、文本和特殊对象(如光、图像和面图)等基本的绘图命令;而坐标系对象包括线、面图和等高线图等描述数据的对象。,2023/11/8,10,核心(Core)对象,MATLAB 7语言中创建核心对象的函数,2023/11/8,11,核心(Core)对象举例,x,y=meshgrid(-2:.4:2);Z=x.*exp(-x.2-y.2
4、);fh=figure(Position,350 275 600 450,Color,w);ah=axes(Color,.8.8.8,XTick,-2-1 0 1 2,.YTick,-2-1 0 1 2);sh=surface(XData,x,YData,y,ZData,Z,.FaceColor,get(ah,Color)+.1,.EdgeColor,k,Marker,o,.MarkerFaceColor,.5 1.85);view(3),2023/11/8,12,绘图(Plot)对象,MATLAB 7提供了一系列的高级绘图函数来创建绘图对象,这些绘图对象的属性具有重要的意义,使用它们可以很方
5、便地访问绘图对象所包含的核心对象的重要属性。,2023/11/8,13,绘图(Plot)对象,MATLAB 7语言中的绘图对象及其绘图命令,2023/11/8,14,绘图(Plot)对象举例,x,y,z=peaks;c,h=contour(x,y,z);set(h,LineWidth,3,LineStyle,:),2023/11/8,15,注释对象,用户一般习惯于使用图形编辑工具栏或是Insert菜单来创建注释对象,同时,用户也可以使用注释函数来创建注释对象。注释对象在一个隐藏的坐标轴下创建,该坐标轴延伸到图形整个长度和宽度,这样,用户可以使法向坐标系(以图形的左下点为(0,0),右上点为(1
6、,1)在图形的任意部位定义图例注释。,2023/11/8,16,(2)图形对象属性的获取和设置,get函数 set函数 默认属性,2023/11/8,17,get函数,在MATLAB 7中,使用get函数可以得到对象的属性及其属性值,其通常的调用格式为:get(handle,PropertyName)。关于它的详细使用方法,用户可以参见get函数的帮助信息。,2023/11/8,18,set函数,在MATLAB 7中,使用set函数可以设置对象的属性值,其通常的调用格式如下。set(H,PropertyName,PropertyValue)命令设置PropertyName的属性为Propert
7、yValue。set(H,a)命令中,a为结构型变量,字段名为图形对象的属性名,字段值为映像的属性值。set(H,PropertyName1,PropertyValue1,PropertyName2,PropertyValue2,.)命令同时设置多个属性的值。,2023/11/8,19,默认属性,MATLAB 7在建立对象时把默认属性赋给各对象。如果想不采用这些默认值,就必须使用句柄图形工具对它们进行设置。当每次都要改变同一属性时,MATLAB 7允许设置用户自己的默认属性。MATLAB 7让用户改变对象层次结构中任意一点上的单个对象或对象类型的默认属性。,2023/11/8,20,默认属性举
8、例,whitebg(w)%create a figure with a white color schemeset(0,DefaultAxesColorOrder,0 0 0,.DefaultAxesLineStyleOrder,-|-|:|-.)Z=peaks;plot(1:49,Z(4:7,:),2023/11/8,21,(3)图形对象的操作,查找对象 堆积次序,2023/11/8,22,查找对象,句柄图形提供了对图形对象的访问途径,并且允许用函数get和set定制图形。如果用户忘记保存句柄或图形对象的句柄,或者当变量被覆盖时,如果要改变对象的属性,就必须进行对象句柄的查找。MATLAB
9、7提供了查找对象的函数gcf、gca、gco和findobj等。,2023/11/8,23,堆积次序,堆积次序决定哪一对象叠加在其他对象上。开始时,堆积次序在对象被创建时就被决定,最后创建的对象在堆栈的顶部。当前的堆积次序是由一个给定的对象Children句柄出现的次序给出的。,2023/11/8,24,2.GUI的基本知识,启动GUI 布局(Layout)编辑器 GUIDE模板介绍 运行GUI,2023/11/8,25,(1)启动GUI,用户欲启动GUI操作,可以在命令窗口中输入guide命令。,2023/11/8,26,(2)布局(Layout)编辑器,当用户在GUIDE 中打开一个GUI
10、时,该GUI将显示在 Layout编辑器中,Layout编辑器是所有GUIDE工具的控制面板。,2023/11/8,27,布局(Layout)编辑器,用户可以使用鼠标拖动模板左边的控件(按钮、坐标轴、单选按钮等)到中间的布局区域。,2023/11/8,28,(3)GUIDE模板介绍,GUIDE Quick Start对话框提供了几种常用的GUI模板。,2023/11/8,29,(4)运行GUI,单击工具栏最右边的绿色按钮,即运行当前的GUI窗口。,2023/11/8,30,3.创建GUI对象,GUI窗口的布局 改变GUI窗口的大小 控件的添加和对齐 GUI控件的属性控制 属性查看器的显示 一些
11、常用的属性 菜单的添加 主菜单的创建 弹出式菜单的的创建,2023/11/8,31,(1)GUI窗口的布局,改变GUI窗口的大小。在布局编辑器中可以很方便地改变GUI 中网格区域的大小,只需单击网格区域的右下角,当鼠标变为箭头形式时,拖动鼠标,即可适时改变窗口的大小。,2023/11/8,32,(2)GUI控件的属性控制,属性查看器的显示 用户可以使用如下3种方式打开:在布局窗口中双击某个控件。在View 菜单中选择Property Inspector选项。右击某个控件并从弹出的快捷菜单中选择Inspect Properties选项。,2023/11/8,33,(3)主菜单的创建1,菜单属性的
12、设置 单击右图中的菜单标题Untitled 1,将在菜单编辑器的右边显示该菜单的属性提供给用户进行编辑,如Label、Tag、Accelerator、Separator和Checked等属性。,2023/11/8,34,(3)主菜单的创建2,给菜单增添菜单项用户可以使用工具栏上的New Menu Item图标给当前菜单增添菜单项。,2023/11/8,35,4.GUI 编 程,GUI的M文件 与句柄结构共享数据 M文件中的函数和响应 控件的使用 使用句柄结构进行GUI数据操作,2023/11/8,36,(1)与句柄结构共享数据,当运行GUI时,M文件创建一个包含所有GUI对象(如控件、菜单和坐
13、标轴)的句柄结构,句柄结构作为一个每个响应的输入来处理。用户使用句柄结构可以实现如下操作。在各响应之间实现数据共享;访问GUI数据。,2023/11/8,37,在各响应之间实现数据共享,用户欲取得变量X的数据,可以先将句柄结构的一个域设为X,然后在使用guidata函数保存该句柄结构,如下所示:handles.current_data=X;guidata(hObject,handles)用户可以在其他任何响应中重新得到该变量的值,使用的操作如下。X=handles.current_data;,2023/11/8,38,访问GUI数据,用户可以利用句柄结构获取GUI控件的任意数据 用户要想使用G
14、UI中的另一个控件(比如一个按钮)来在当前所选的菜单项实现某个操作,那么用户可以在该按钮的响应插入如下命令。all_choices=get(handles.my_menu,String)current_choice=all_choicesget(handles.my_menu,Value),2023/11/8,39,(2)M文件中的函数和响应,用户可以给GUI的M文件的如下部分增加程序代码:打开函数(Opening function),该函数在GUI可见之前实施操作。输出函数(Output function),在必要的时候向命令行输出数据。响应(Callbacks),在用户激活GUI中的相应控
15、件时实施操作。,2023/11/8,40,打开函数,打开函数包含有在GUI可见之前进行操作的代码,用户可以在打开函数中访问GUI的所有控件,因为所有DUI中的对象都在调用打开函数之前就已经创建。如果用户需要在访问GUI之前实现某些操作(如创建数据或图形),那么可以通过在打开函数中增添代码来加以实现。对于一个文件名为my_gui的GUI来说,它的打开函数的定义语句如下。function my_gui_OpeningFcn(hObject,eventdata,handles,varargin),2023/11/8,41,输出函数,输出函数将输出结果返回给命令行。这一点在用户需要将某个变量传递给另一
16、个GUI时尤其实用。UIDE在输出函数中生成如下代码。%-Outputs from this function are returned to the command line.function varargout=my_gui_OutputFcn(hObject,eventdata,handles)%Get default command line output from handles structurevarargout1=handles.output;,2023/11/8,42,(3)控件的使用,“开关”按钮(Toggle Button)的响应 按钮(Radio Buttons)的响应
17、“复选框”控件(Check Boxes)的响应“文本框”控件(Edit Text)的响应“滚动条”控件(Sliders)的响应“列表框”控件(List Boxes)的响应“弹出菜单”控件(Pop-Up Menus)的响应 控件板(Panels)的响应,2023/11/8,43,控件的使用举例1,按钮(Radio Buttons)的响应 在图形界面中添加该控件之后,该控件将在指定位置添加按钮,按钮的标识字符由属性String控制,而返回值由Value值控制。在GUI的M文件中使用如下形式的代码来编制Radio按钮的响应程序:if(get(hObject,Value)=get(hObject,Ma
18、x)%then rsdio button is selected-take approriate actionelse%radio button is not selected-take approriate actionend,2023/11/8,44,控件的使用举例2,“复选框”控件(Check Boxes)的响应 在图形界面中添加该控件之后,该控件将提供复选功能,将显示文本字符串及选择框。在GUI的M文件中使用如下形式的代码来编制“复选框”控件的响应程序:function checkbox1_Callback(hObject,eventdata,handles)if(get(hObjec
19、t,Value)=get(hObject,Max)%then checkbox is checked-take approriate actionelse%checkbox is not checked-take approriate actionend,2023/11/8,45,控件的使用举例3,“文本框”控件(Edit Text)的响应 在图形界面中添加该控件之后,该控件的属性相当于其他语言设计中的文本框属性,允许用户动态地编辑或是输入文本字符串。如果需要获取用户在文本框中输入的字符串,可以在响应程序中输入如下代码:function edittext1_Callback(hObject,eventdata,handles)user_string=get(hObject,string);%proceed with callback.,2023/11/8,46,(4)使用句柄结构进行GUI数据操作,GUIDE提供了一种机制来存储和检索共享的数据,这些操作都通过包含有GUI控件句柄的相同结构来实现,这种机制就称为句柄结构。句柄结构包含有GUI的所有控件的句柄,它在M文件中被传递给每一个响应。因此,该响应对保存任意共享数据十分有用。,
链接地址:https://www.31ppt.com/p-6511722.html