第4章 Matlabl的图形功能 七、图形对象的有关概念 图形用户界面( Graphic User Interface)是指包含图形对 象的用户界面,是 MATLAB句柄图形系统的子系统。它 包含两类图形对象:一是用户界面控件对象( Uicontrol); 是用户界面菜单对象( Yimeng) 1.句柄图形 >句柄图形( Handle graphics)是一种面向对象 ( Object-Oriented)的绘图系统概念,它提供了创建计算 机图形所必须的各种软件,所支持的指令可以直接创建线、 文字、面以及图形用户界面。 句柄图形基于这样的概念:一幅图的每一个组成部分都 是一个对象( Object,每一个对象有一系列句柄 ( Handle)和它相关
第4章 Matlab的图形功能 七、图形对象的有关概念 图形用户界面(Graphic User Interface)是指包含图形对 象的用户界面,是MATLAB句柄图形系统的子系统。它 包含两类图形对象:一是用户界面控件对象( Uicontrol); 一是用户界面菜单对象(Uimenu)。 1.句柄图形 ➢句柄图形 ( Handle Graphics) 是 一 种 面 向 对 象 ( Object-Oriented)的绘图系统概念,它提供了创建计算 机图形所必须的各种软件,所支持的指令可以直接创建线、 文字、面以及图形用户界面。 ➢句柄图形基于这样的概念:一幅图的每一个组成部分都 是 一个对 象( Object),每 一个对 象有一 系列句 柄 ( Handle)和它相关
第4章 Matlabl的图形功能 2.图形对象和句柄图形的结构层次 图形对象包括图形窗口或者图形,还有坐标系、线条、 曲面、文本等。这些对象按父对象和子对象组成 MATLAB图形体系的层次结构。 每个图形对象都由若干可以被独立操作的对象构成,它 不必包含全部对象,但是必须具备根屏幕(Root)和图 形窗( Figure)。 每个父对象可以包含一个或多个子对象。除了控件对象 ( Uicontro)和菜单对象( Yimeng)外,所有的对象 都是坐标轴的子对象,并且在这些坐标轴上显示。所有 创建对象的函数当父对象不存在时,都会创建它们
2.图形对象和句柄图形的结构层次 ➢ 图形对象包括图形窗口或者图形,还有坐标系、线条、 曲 面、 文本 等。 这些 对象 按父 对象 和子 对象 组成 MATLAB 图形体系的层次结构。 ➢ 每个图形对象都由若干可以被独立操作的对象构成,它 不必包含全部对象,但是必须具备根屏幕( Root)和图 形窗( Figure)。 ➢ 每个父对象可以包含一个或多个子对象。除了控件对象 ( Uicontrol)和菜单对象( Uimenu)外,所有的对象 都是坐标轴的子对象,并且在这些坐标轴上显示。所有 创建对象的函数当父对象不存在时,都会创建它们。 第4章 Matlab的图形功能
第4章 Matlabl的图形功能 Root 根屏幕 父对象 Figure 图 子对象 Uncontrol Axes Uimenu Uicontextm enu 界面控制 坐标轴 界面菜单 上下文菜单 Line Sur face Rectangle Patch Image Light 线 面 方 贴片 影像 文本 光 句柄图形体系的对象层次结构图
第4章 Matlab的图形功能 句柄图形体系的对象层次结构图
第4章 Matlabl的图形功能 3对象句柄 句柄( Handle)是分配给每一个对象的数字标识( Identifier),每创建一个对象时,就为它建立一个惟一 的句柄。句柄是存取图形对象的惟一规范识别符,不同 对象的句柄不可能重复和混淆。 每台计算机的根对象是根屏幕(Root),其句柄总是数 字0;而图形窗口( Figure)的句柄总是正整数,用它 来标识图形窗的序号。除根对象和图对象外,其余对象 的句柄则是双精度浮点数。 >除了根对象外,所有的对象都由与之相对应的内置函数 (Buld- in function)创建,每个函数在创建对象的同 时,还可以返回该对象的句柄h
第4章 Matlab的图形功能 3.对象句柄 ➢ 句柄( Handle)是分配给每一个对象的数字标识( Identifier),每创建一个对象时,就为它建立一个惟一 的句柄。句柄是存取图形对象的惟一规范识别符,不同 对象的句柄不可能重复和混淆。 ➢ 每台计算机的根对象是根屏幕(Root),其句柄总是数 字0;而图形窗口( Figure )的句柄总是正整数,用它 来标识图形窗的序号。除根对象和图对象外,其余对象 的句柄则是双精度浮点数。 ➢ 除了根对象外,所有的对象都由与之相对应的内置函数 ( Build-in Function)创建,每个函数在创建对象的同 时,还可以返回该对象的句柄h
第4章 Matlabl的图形功能 创建图形对象的底层函数 函数名称功能 调用格式 创建轴 h=axes(position [left, bottom, width, height]) tigure 创建图形窗口 h=figure(n) Image 创建影像 h=image(x) line 创建线 h=line(x,y z, 创建贴片(填充多边形) h=patch(x,y, z, c) surtace 创建面 h=surface(x, y, Z, c) rectangle创建方形(注意还包括其中的填充)|h= ectangle( position:[xy,w:] curvature?[xc,y) text 创建文本 h=text(x, y, ' string) light 创建光 h=light( position, X) uncontrol 创建用户界面控制对象 h=uncontrol( property, value uLmen 创建用户界面菜单对象 h=uimenu(property, value)
第4章 Matlab的图形功能 创建图形对象的底层函数
第4章 Matlabl的图形功能 有一些函数可以用来获取对象的句柄。 获取图形对象句柄的函数 函数 含义和功能 CCI 获取当前图形窗口的句柄 ca 获取当前坐标轴的句柄 gco 获取在当前图形窗口中“被鼠标最近单击”的当前对象的句柄 gcbo 获取当前正在执行调用对象的句柄 gcbf 获取包括正在执行调用对象图形的句柄
第4章 Matlab的图形功能 获取图形对象句柄的函数 有一些函数可以用来获取对象的句柄
第4章 Matlabl的图形功能 4.图形对象的操作 在获取图形句柄后,即可对图形对象进行各种操作 a.删除图形对象的 delete命令 调用格式为: delete(h) 该命令可以删除句柄h所指的对象及其所有的子对象。 例如 delete(gca)将删除当前轴和它所有的子对象 由于该命令不提供确认、直接执行,用户在使用时应谨慎 进行
第4章 Matlab的图形功能 4. 图形对象的操作 在获取图形句柄后,即可对图形对象进行各种操作。 a. 删除图形对象的delete 命令 调用格式为: delete(h) 该命令可以删除句柄h 所指的对象及其所有的子对象。 例如 delete(gca)将删除当前轴和它所有的子对象。 由于该命令不提供确认、直接执行,用户在使用时应谨慎 进行
第4章 Matlabl的图形功能 b函数 findob 快速地遍历对象层,并获取指定属性的对象句柄。 调用方式如下: h= findobj( propertyname’, propertyvalue,):在所有的对象层中查 找符合指定属性值的对象,返回句柄值h; h=findobj(Object Handle 'propertyname, propertyvalue,: E3 范围限制在句柄“ Objecthandle”指定的对象及其子对象中; h=findobj(objectHandles, flat,propertyname, propertyvalue,.) 把查找的范围限制在句柄“ Objecthandle"指定的对象中,但不包 括其子对象; h= findobj:返回根对象和所有子对象的句柄值; h= findobj( Objecthandles):返回“ Objecthandle”指定的对象和其 所有子对象的句柄值
第4章 Matlab的图形功能 b. 函数 findobj 快速地遍历对象层,并获取指定属性的对象句柄。 调用方式如下: ➢ h=findobj(’propertyname’,propertyvalue,…):在所有的对象层中查 找符合指定属性值的对象,返回句柄值h; ➢ h=findobj(ObjectHandle ,'propertyname',propertyvalue,…):查找 范围限制在句柄“ObjectHandle”指定的对象及其子对象中; ➢ h=findobj(ObjectHandles,'flat', 'propertyname',propertyvalue,…): 把查找的范围限制在句柄 “ ObjectHandle”指定的对象中,但不包 括其子对象; ➢ h=findobj:返回根对象和所有子对象的句柄值; ➢ h=findobj(ObjectHandles):返回“ ObjectHandle”指定的对象和其 所有子对象的句柄值
第4章 Matlabl的图形功能 创建一个图形对象,并寻求图形对象的句柄值。 mesh(peaks(30);%创建山峰的网格图 text(30,20,2, \eftarrowpeak')%给图形对象加上文本,图形对象中包括坐标轴、线条和 文本标注 h= findobj(gc)%求当前图形窗口的句柄 %返回句柄值赋予变量 10000 99.0010 1010006 100.0016 句柄中的元素排列顺序决定于各个对 象在整个对象层次结构中的位置。 h()=1为图形对象( Figure)的句柄; h(2)=99001为图的下一级子对象坐标轴的句柄 h(3)=1010006为坐标轴的下一级子对象线条的句柄 h(4)=1000016为坐标轴的下一级子对象文本的句柄
第4章 Matlab的图形功能 创建一个图形对象,并寻求图形对象的句柄值。 mesh(peaks(30)); %创建山峰的网格图 text(30,20,2,'\leftarrowpeak') %给图形对象加上文本,图形对象中包括坐标轴、线条和 文本标注 h=findobj(gcf) %求当前图形窗口的句柄 h= %返回句柄值赋予变量 1.0000 99.0010 101.0006 100.0016 句柄中的元素排列顺序决定于各个对 象在整个对象层次结构中的位置。 h(1)=1 为图形对象( Figure)的句柄; h(2)=99.001 为图的下一级子对象坐标轴的句柄; h(3)=101.0006 为坐标轴的下一级子对象线条的句柄; h(4)=100.0016 为坐标轴的下一级子对象文本的句柄
第4章 Matlabl的图形功能 C.函数 copyobi 把对象从一个父对象中复制到另一个父对象中。若复制的对 象中含有子对象,则把所有的子对象一并复制。 调用格式如下 >C= opyobj(HP):H和P都是向量,H和P的长度必须相等,向量 的元素为对象的句柄。H中的句柄对应的图形对象都被复制到P中相应 句柄的图形元素之下,分别成为这些父对象的子对象。新对象的句柄将 赋值给向量C中的相应元素; >C= copyob山,p)}:H是向量,p是标量。H中的每一个句柄对应的图 形对象都将被复制到句柄p的图形对象之下,成为这个父对象p的子对 象。新子对象的句柄将赋给向量C中的相应元素; >C= copyobj(h,P):h是标量,P是向量。句柄h的图形对象将被复制到 向量P中的每个句柄对应的图形对象之下,分别成为这些父对象的子对 象。新子对象的句柄将赋给向量C中的对应元素
第4章 Matlab的图形功能 c. 函数 copyobj 把对象从一个父对象中复制到另一个父对象中。若复制的对 象中含有子对象,则把所有的子对象一并复制。 调用格式如下: ➢C=copyobj(H,P): H 和 P 都是向量, H 和 P 的长度必须相等,向量 的元素为对象的句柄。H 中的句柄对应的图形对象都被复制到P 中相应 句柄的图形元素之下,分别成为这些父对象的子对象。新对象的句柄将 赋值给向量C 中的相应元素; ➢C=copyobj(H,p):H 是向量,p 是标量。H 中的每一个句柄对应的图 形对象都将被复制到句柄 p 的图形对象之下,成为这个父对象p的子对 象。新子对象的句柄将赋给向量C 中的相应元素; ➢C=copyobj(h,P):h 是标量,P 是向量。句柄h 的图形对象将被复制到 向量 P 中的每个句柄对应的图形对象之下,分别成为这些父对象的子对 象。新子对象的句柄将赋给向量C 中的对应元素