
《新编MATLAB&Simulink自学一本通》课件第5章 图形用户界面(GUI)编程.ppt
157页2023/5/4主要内容主要内容 图形对象图形对象 图形用户界面的设计原则和步骤图形用户界面的设计原则和步骤 图形用户界面的开发方法图形用户界面的开发方法 直接编写直接编写M文件开发图形用户界面文件开发图形用户界面 利用利用GUIDE工具开发图形用户界面工具开发图形用户界面 典型案例介绍典型案例介绍 2023/5/4第一节第一节 图形对象图形对象2023/5/4 1 1、图形对象:、图形对象:MATLABMATLAB用来显示数据和创建图形用户界面的基本元素用来显示数据和创建图形用户界面的基本元素例如:程序界面上的按钮、菜单、工具条等例如:程序界面上的按钮、菜单、工具条等2 2、图形对象的标识:、图形对象的标识:使用使用“句柄句柄”来标识每一个图形对象的来标识每一个图形对象的实例实例通过句柄,用户就可以找到相应图形对象的各项属性,进而修改柄,用户就可以找到相应图形对象的各项属性,进而修改这些属性,以产生不同的图形呈现效果这些属性,以产生不同的图形呈现效果一、图形对象的概念一、图形对象的概念2023/5/4 如右图所示的图形用户界面如右图所示的图形用户界面包括如下图形对象:包括如下图形对象:(1 1)一个)一个坐标轴坐标轴,用来在其中,用来在其中绘图;绘图;(2 2)一个)一个弹出式菜单弹出式菜单,列出,列出MATLABMATLAB中的三个函数:中的三个函数:peakspeaks、membranemembrane和和sincsinc;(3 3)一个)一个静态文本框静态文本框,提示用,提示用户选择弹出式菜单项;户选择弹出式菜单项;(4 4)三个)三个下压按钮下压按钮,用来调用,用来调用相应的绘图命令来绘制图形。
相应的绘图命令来绘制图形2023/5/4二、二、图形对象的类型图形对象的类型1.图形对象的层次关系图形对象的层次关系 根据图形对象之间的依赖关系,根据图形对象之间的依赖关系,MATLABMATLAB将所有图形对象将所有图形对象组织在一个组织在一个树形结构的层次关系表树形结构的层次关系表中中 ,如下图所示处在,如下图所示处在树形结构上层的对象是下层对象的树形结构上层的对象是下层对象的父对象父对象;处在树形结构下处在树形结构下层的对象是上层对象的层的对象是上层对象的子对象子对象例如:例如:axes对象是对象是figure对象的子对象,或者说对象的子对象,或者说figure对对象是象是axes对象的父对象对象的父对象2023/5/4对象类型对象类型父对象父对象对象描述对象描述根对象根对象root无无对应于计算机的屏幕对应于计算机的屏幕图形窗口对象图形窗口对象figureroot屏幕上的一个图形窗口,句柄值是整数,在窗口的标题中给出,屏幕上的一个图形窗口,句柄值是整数,在窗口的标题中给出,如如1、2、3、坐标轴坐标轴axesfigure在图形窗口中定义一个图形区域,用来描述子对象的位置和方向在图形窗口中定义一个图形区域,用来描述子对象的位置和方向用户控件用户控件uicontrolfigure用户界面控制。
当用户点击对象时,用户界面控制当用户点击对象时,MATLAB完成一个相应的完成一个相应的动作动作用户菜单用户菜单uimenufigure创建一个窗口菜单,用户使用菜单来控制程序运行创建一个窗口菜单,用户使用菜单来控制程序运行现场菜单现场菜单uicontextmenufigure创建与图形对象关联的快捷菜单创建与图形对象关联的快捷菜单图像图像imageaxes用当前的色图矩阵定义一个图像图像可以有自己的色图用当前的色图矩阵定义一个图像图像可以有自己的色图灯光灯光lightaxes影响补片和曲面对象的光源影响补片和曲面对象的光源线条线条lineaxes使用使用plot、plot3、contour和和contour3等函数创建的一些简单等函数创建的一些简单的图形的图形补片补片patchaxes创建有边界的填充多边形创建有边界的填充多边形矩形矩形rectangleaxes从椭圆到矩形变化的二维形状从椭圆到矩形变化的二维形状曲面曲面surfaceaxes将数据作为将数据作为x-y平面高度创建的三维矩阵数据描述平面高度创建的三维矩阵数据描述文本文本textaxes字符串,它的位置由其父对象来指定字符串,它的位置由其父对象来指定2、MATLAB图形对象种类图形对象种类 2023/5/4 在进行图形用户界面编程时,用户最关心的是电脑屏幕的在进行图形用户界面编程时,用户最关心的是电脑屏幕的尺寸,用户需要根据电脑屏幕的尺寸(通常用像素点来表示)尺寸,用户需要根据电脑屏幕的尺寸(通常用像素点来表示)来确定图形窗口的尺寸大小。
来确定图形窗口的尺寸大小例例】在命令窗口中输入命令以查询计算机屏幕的尺寸在命令窗口中输入命令以查询计算机屏幕的尺寸【注】计算机屏幕是一个根对象计算机屏幕是一个根对象(root)(root)在MATLABMATLAB中,可以中,可以使用使用setset和和getget命令来设置它的属性通常,命令来设置它的属性通常,rootroot对象的所有对象的所有属性都采用默认值,用户不必进行修改属性都采用默认值,用户不必进行修改rootroot对象的句柄值为对象的句柄值为0 0get(0,Units)%取得表示屏幕尺寸的单位,默认为像素(取得表示屏幕尺寸的单位,默认为像素(pixels)ans=pixels get(0,ScreenSize)%取得屏幕的尺寸,为取得屏幕的尺寸,为1280800像素点像素点ans=1 1 1280 8002023/5/4三、三、图形对象的属性图形对象的属性 图形对象的属性图形对象的属性可以控制对象的外观和行为等许多方面的性可以控制对象的外观和行为等许多方面的性质对象的属性既包括对象的属性既包括对象的一般信息对象的一般信息,例如对象的类型、父对,例如对象的类型、父对象和子对象等;又包括象和子对象等;又包括对象的特定的、独一无二的信息对象的特定的、独一无二的信息,例如,例如figurefigure对象中对鼠标控制的对象中对鼠标控制的WindowButtonDownFcnWindowButtonDownFcn、WindowButtonMotionFcnWindowButtonMotionFcn等属性。
等属性MATLAB MATLAB将图形对象的信息组织成一个将图形对象的信息组织成一个层次表层次表,并将这些信息,并将这些信息储存在该对象的属性中例如,储存在该对象的属性中例如,rootroot属性表包括当前图形窗口属性表包括当前图形窗口的句柄和当前的指针位置;的句柄和当前的指针位置;figurefigure属性表包括其子对象的列表属性表包括其子对象的列表并始终跟踪窗口中发生的特定事件,等等并始终跟踪窗口中发生的特定事件,等等2023/5/4 一些属性对于所有的图形对象来说具有相同的含义下表一些属性对于所有的图形对象来说具有相同的含义下表列出了图形对象的这些共有的属性列出了图形对象的这些共有的属性对象类型对象类型对象描述对象描述BusyAction控制控制MATLAB处理特定对象回调函数中断的方法如果处理特定对象回调函数中断的方法如果Interruptible设置为设置为off,BusyAction可以有下面几种情况:可以有下面几种情况:queue:此为缺省值表示将回调函数的中断请求放入一个挂起队列中直到对象的:此为缺省值表示将回调函数的中断请求放入一个挂起队列中直到对象的回调函数完成;回调函数完成;cancel:忽略其它回调函数所有可能的中断:忽略其它回调函数所有可能的中断ButtonDownFcn定义用鼠标左键点击图形对象时执行的回调函数定义用鼠标左键点击图形对象时执行的回调函数Children保存对象的所有子对象句柄的向量保存对象的所有子对象句柄的向量Clipping图形对象显示模式。
图形对象显示模式on(缺省值):只显示在坐标轴界限内的部分图形对象;(缺省值):只显示在坐标轴界限内的部分图形对象;off:同时显示坐标轴界限内外的部分同时显示坐标轴界限内外的部分CreateFcn创建图形对象时执行的回调函数,常用缺省值创建图形对象时执行的回调函数,常用缺省值DeleteFcn用户销毁图形对象时执行的回调函数用户销毁图形对象时执行的回调函数HandleVisibility控制对象句柄的访问方式控制对象句柄的访问方式on:(缺省值),总是可以访问;:(缺省值),总是可以访问;callback:只有回调函数或者调用回调函数的函数可以访问,这样可以防止用户从:只有回调函数或者调用回调函数的函数可以访问,这样可以防止用户从命令行中对图形对象进行修改,以防止误操作;命令行中对图形对象进行修改,以防止误操作;off:不可访问不可访问2023/5/4Interruptible决定回调函数是否可以被随后调用的回调函数中断,有决定回调函数是否可以被随后调用的回调函数中断,有on和和off两个值可以设置两个值可以设置Parent该对象的父对象的句柄该对象的父对象的句柄Selected该对象是否被选中,可以设置为该对象是否被选中,可以设置为on或或offSelectionHighlight定义对象是否使用可见方式表明被选中状态,可以设置为定义对象是否使用可见方式表明被选中状态,可以设置为on(缺省(缺省值)或者值)或者offTag用户用来标识对象的字符串用户用来标识对象的字符串Type对象的类型,是对象的类型,是figure、axes、line或者或者text等等UserData是一个矩阵,包含用户要在对象中保存的数据。
矩阵数据并不被对象本是一个矩阵,包含用户要在对象中保存的数据矩阵数据并不被对象本身使用身使用UIContextMenu和对象相关联的现场菜单句柄当在对象上点击鼠标右键时,将显示出和对象相关联的现场菜单句柄当在对象上点击鼠标右键时,将显示出现场菜单现场菜单Visible决定对象是否可见,值可以为决定对象是否可见,值可以为on或者或者off续前表:续前表:2023/5/4 MATLAB为所有对象都设置了为所有对象都设置了缺省值缺省值用户在创建图形对用户在创建图形对象时,如果没有指定其属性值,则象时,如果没有指定其属性值,则MATLAB会使用对象的系会使用对象的系统缺省属性值来创建对象可以在命令窗口中使用统缺省属性值来创建对象可以在命令窗口中使用get命令来命令来查询这些缺省的属性值,查询这些缺省的属性值,所有缺省属性值均以所有缺省属性值均以factory开头,开头,表示其表示其“出厂出厂”设置设置例例】查询出厂设置查询出厂设置get(0,factory)ans=factoryFigureAlphamap:1x64 double factoryFigureBusyAction:queue factoryFigureButtonDownFcn:factoryFigureClipping:on factoryFigureCloseRequestFcn:closereq factoryFigureColor:0 0 0 factoryFigureColormap:64x3 double .2023/5/4 用户不仅可以用户不仅可以查询查询当前任意图形对象的属性值,而且可以当前任意图形对象的属性值,而且可以设设置置对象的大多数属性值(某些属性被设置为对象的大多数属性值(某些属性被设置为“只读只读”,用户只,用户只能查询,不能修改)。
能查询,不能修改)属性值只属性值只对对象的特定实例起作用对对象的特定实例起作用,即修改对象的属性值,即修改对象的属性值不会对同类对象、不同实例的属性值产生影响例如,修改不会对同类对象、不同实例的属性值产生影响例如,修改坐标轴坐标轴1的刻度值,坐标轴的刻度值,坐标轴2的刻度值则不会受影响,等等的刻度值则不会受影响,等等由于是层次结构,所以由于是层次结构,所以某个对象的属性改。
