资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,11,章 句柄图形,本书在第,7,章向读者详细介绍了,MATLAB,的数据可视化功能,即如何通过运用,MATLAB,的绘图函数和图形绘制窗口绘制用户需要的二维、三维等图形,相信读者通过学习,已经应该对于“高级”绘图的运用有了一定程度的了解。,正如笔者提到的一样,,MATLAB 7.0,中的“高级”绘图指令往往不能使用户对于图形绘制了解的很透彻,如果用户需要通过了解“低层”绘图指令和图形对象属性开发函数,来对高级绘图指令的形成原理进行深入理解,并绘制出更加个性化的图形,那么读者应该仔细阅读本章。,本章的所介绍的主要内容包括:句柄图形的各对象,对象属性,设置和访问对象的属性,访问对象句柄,控制图形的输出以及图形窗口对象和轴对象这两个常用对象的属性设置。,2024/11/16,1,11.1,句柄图形的体系结构,句柄图形(,Handle Graphics,)是,MATLAB 7.0,提供给用户的一种用于创建计算机图形的面向对象的图形系统,该系统提供给用户创建线、字、网格、面及图形用户界面(,GUI,,有关内容详见本书第,11,章)的多种绘图指令。第,6,章所介绍的各种“高级”指令都是以句柄图形为基础生成的,所以句柄图形也称为低层图形。,低层指令的调用,没有高层指令那样简明清晰、通俗易懂,但是低层指令可以直接对图形的基本要素进行操作的特点决定了使用者可以让绘制的图形更加个性化,更加具有表现力。,2024/11/16,2,11.1.1,句柄图形的等级(,hierarchy,)关系,句柄图形对象是,MATLAB,中用来显示数据和创建,GUI,的基本绘图元素,对象的每个实例(,instance,)都对应唯一的标识符(,Identifier,),此标识符称为对象的句柄(,handle,),句柄由系统设定,用户不可以改变。用户可以利用句柄轻松地操作现有图形的各项特征,即设置对象属性。,MATLAB,的句柄图形体系结构中包含各种具有继承关系的对象,其关系有“父子”(从属)关系和“兄弟”(平行)关系两种,具体如图所示。,2024/11/16,3,11.1 2,句柄图形的对象类型,本小节主要在,11.1.1,的基础上向用户详细介绍句柄图形的各级对象。,1,根对象,2,图形窗口对象(,Figure,),3,用户界面对象(,UIobjects,)。,4,轴对象(,Axes,)。,2024/11/16,4,11.2 MATLAB,中对象的属性,MATLAB,中各级对象的属性控制其各种外观和显示特性。对象的属性包括公共属性(如对象类型、父、子对象、是否可见等)和不同类型对象的特有属性。,例如,通过任何给定的图形对象,用户可以获取窗口中的最后击键、鼠标指针位置,或是最后选中的菜单句柄。,2024/11/16,5,11.3,设置和访问对象属性值,MATLAB,提供了,set,和,get,两个函数,分别可以使用户设置和返回现有图形对象的属性值。利用这两个函数,还可以列出具体固定设置的属性的所有值。,两个函数的基本调用格式如下:,set(object_handle,PropertyName,NewPropertyValue),returned_value=get(object_handle,PropertyName),以上两函数调用格式中,,object_handle,代表对象句柄,,PropertyName,代表属性名称,,NewPropertyValue,代表用户设置的属性值。,读者需要注意的是,函数调用格式中的属性名称为引用的字符串,而属性值则根据与不同的属性而变换类型。,2024/11/16,6,11.3.1,设置属性值,调用,set,函数,并利用对象的返回句柄,用户可以设置现有对象的属性,例如,下面的代码将,y,轴移动到图形的当前坐标系的左边:,set(gca,YAxisLocation,left),如果句柄参数是一个矢量,则,MATLAB,将所有标识的对象均进行属性的设置。,用户还可以运用构架和元胞数组设置属性名称和属性值,这在设置多个对象的相同属性时非常奏效,代码如下:,view1.CameraViewAngleMode=manual;,view1.DataAspectRatio=1 1 1;,view1.ProjectionType=Perspective;,2024/11/16,7,11.3.2,查询属性值,MATLAB,中,用户可以调用,get,函数来查询对象属性的当前值。,单个属性值的查询:调用,get,函数获取对象属性,用户可以得到该属性中的所有数据,例如,查询当前坐标轴的,PlotBoxAspectRatio,属性值,代码如下:,get(gca,PlotBoxAspectRatio),ans=,1 1 1,如果用户希望查询,ColorOrder,属性,代码如下:,2024/11/16,8,11.3.3,默认属性,以上两小节,向读者介绍了如何设置和查询,MATLAB,中对象的属性,实际上,,MATLAB,中的所有对象属性都有系统内建的默认值,即出厂设置值;当然,用户也可以自行定义任何一个,MATLAB,对象的默认属性值。,1,默认属性值的搜索,.,2,默认属性值的设置,3,对象属性的出厂设置值,2024/11/16,9,11.4,图形窗口对象的属性,MATLAB,图形窗口对象是用于显示,MATLAB,中图形输出的窗口,所以图形窗口对象的属性可以决定输出窗口的多种特征。本节主要介绍图形窗口对象的属性设置,这些属性与窗口的大小、位置、色彩、曲线绘制方式及指针样式有关。,2024/11/16,10,11.4.1,图形窗口的定位,图形窗口对象的位置(,Position,)属性决定图形窗口在屏幕上的大小和位置,位置属性的默认设置是:图形大小是屏幕大小的,1/4,,且位于上半屏幕的中间位置。在,MATLAB,中,图形窗口的位置属性是一个矢量:,left bottom width height,。其中,,left,和,bottom,确定窗口左下角的位置,而,width,和,height,分别确定窗口的宽和高,如图所示。,2024/11/16,11,11.4.2,设置色彩属性,色彩属性关系到,MATLAB,使用系统色彩资源的方式,用户对色彩属性的设置,将影响图形窗口子对象的绘制上色速度和精确度。,MATLAB,中图形对象的色彩属性如表所示。,2024/11/16,12,11.4.3,图像窗口绘制方式和光标指针样式,MATLAB,允许用户选择不同的方式来绘制图形,方式的选择主要取决于所绘制图形的类型。决定,MATLAB,绘制图形的方式有下面,4,种。,BackingStore,:当图形被遮挡部分显露出来时,确定是否重绘。,DoubleBuffer,:为简单动画生成渲染效果。,Renderer,和,RendererMode,:指定不同的渲染方法,或由,MATLAB,选择。,除了对绘制方式的选择,,MATLAB,还提供了多种指针符号,供用户选择。在图形窗口中,图形符号表示指针的位置,用户可以选择系统预定义的,15,种指针符号,也可以自行设置指针符号。指针符号的属性值、标识及具体功能如表所示。,2024/11/16,13,11.5,轴对象的属性,轴对象是图形窗口对象的子对象,也是众多重要对象的父对象(参看,11.1,节),在句柄图形对象的结构中,它是十分重要的一环。轴对象的属性众多,主要功能为控制图像各方面信息的显示。本节就其重要的属性进行介绍。,2024/11/16,14,么么么么方面,Sds,绝对是假的,11.5.1,轴对象的几何属性,同图形窗口对象一样,轴对象的几何属性分别是位置属性,Position,和单位属性,Units,,这些属性决定了轴对象在图形窗口对象中的位置、大小和轴对象的单位。值得注意的是,这些属性与图形窗口对象有不同之处。在图形是二维曲线时,轴位框和坐标框两者完全重合,如图所示。,2024/11/16,16,11.5.2,轴对象多轴重叠属性,本书在第,6,章中曾介绍过的,subplot,函数可以完成单图多轴的绘制,使用,subplot,函数是把一个图形窗口按位置等分成多个“子块”,分别在每一部分绘制独立的图形。在此基础上,本小节讲解轴对象的“多轴重叠属性”,即允许用户在一个图形窗口对象中绘制多个重叠轴对象。,如果用户需要给图形添加注释,可以使用高级绘图函数在同一个轴对象中添加字,这也是第,6,章所介绍过的内容。另外一种方法是直接在图形窗口再创建一个专门用于注释的轴对象,下面举例说明。,2024/11/16,17,11.5.3,单轴对象刻度、刻度标记及坐标轴方向属性,本节以一个实例讲解单轴对象控制刻度、刻度标记及坐标轴方向的属性。,2024/11/16,18,11.5.4,轴对象自动模式属性,自动模式属性(,Automatic-Mode Properties,)又常被称为“照相机属性”。用户可以在轴对象属性的基础上设置,MATLAB,的照相机属性,,MATLAB,的照相机属性如表所示。,2024/11/16,19,11.6,访问对象句柄,MATLAB,中创建的任何对象都由系统赋予一个句柄,所有构造函数的返回值即为其所创建对象的句柄。,上一节已经介绍了对对象属性的查询和设置方法。如果需要对对象的属性进行操作(查询或设置),则必须在对象创建之初,就将其句柄保存在变量中,作为准备;如果用户觉得这样做比较繁琐,或者偶尔忘记了保存,还可以调用,findobj,函数或罗列其父对象的,Children,属性来获取现有对象的句柄。根对象的句柄为,0,,而其子对象,图形窗口对象的句柄一般有下面两种情况。,整数:默认显示在窗口标题栏中。,浮点数:具有完全的,MATLAB,内部精度。,对象句柄的取值类型由图形窗口对象的,IntegerHandle,属性来控制。,2024/11/16,20,11.6 1,获取当前对象的句柄,在,MATLAB,中,句柄图形的一个极为重要的概念是当前性(,Be Current,)。例如,当前的窗口即为接受绘制函数输出的窗口;当前的坐标轴就是创建坐标轴子对象的命令输出目标坐标轴;而当前的图形对象则为最后创建的图形对象,或被用户鼠标单击选中的图形对象。,用户可以直接把调用绘图函数的返回值存放在一个变量中,那么这个变量就是相应图形的句柄。另外一种获取当前对象句柄的常用方法是调用,get,函数,在第,11.3,节中曾经提到过,get,函数的调用,现在,将系统地阐述一下,get,函数的调用格式和功能。通常情况下,,MATLAB,保存,3,个句柄,分别对应于父对象属性列表中的对象,如图所示。,2024/11/16,21,11.6.2,调用,findobj,函数通过属性值查询对象,MATLAB,提供了,findobj,函数,用于通过对属性值的搜索来查询对象句柄。,findobj,函数可以快速形成一个结构层次的截面,并获得具有指定属性值的对象句柄,如果用户没有指定起始对象,那么系统默认,findobj,函数从,Root,对象开始,搜索与用户指定属性名和属性值相符的所有对象。例如,如图所示,正弦函数,sin,图形上包含用以标注函数特定值的字对象。,2024/11/16,22,11.6.3,使用句柄操作对象,本节主要讲解如何利用句柄,完成对对象的复制和删除操作。,1,调用,copyobj,函数复制对象,利用,MATLAB,中的,copyobj,函数可以将对象,a1,从其父对象中复制到另一个对象中,生成新的对象,a2,。,a1,和,a2,的区别有,2,点:,2,调用,delete,函数删除对象,在,MATLAB,中,用户可以使用,delete,函数来删除一个对象,其参数是此对象的句柄。例如,用户若要删除当前的坐标轴,代码如下:,delete(gca),2024/11/16,23,11.7,控制图形的输出,本书在以前的章节中多次提到,,MATLAB,允
展开阅读全文