




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章句柄图形,本书在第7章向读者详细介绍了MATLAB的数据可视化功能,即如何通过运用MATLAB的绘图函数和图形绘制窗口绘制用户需要的二维、三维等图形,相信读者通过学习,已经应该对于“高级”绘图的运用有了一定程度的了解。正如笔者提到的一样,MATLAB7.0中的“高级”绘图指令往往不能使用户对于图形绘制了解的很透彻,如果用户需要通过了解“低层”绘图指令和图形对象属性开发函数,来对高级绘图指令的形成原理进行深入理解,并绘制出更加个性化的图形,那么读者应该仔细阅读本章。本章的所介绍的主要内容包括:句柄图形的各对象,对象属性,设置和访问对象的属性,访问对象句柄,控制图形的输出以及图形窗口对象和轴对象这两个常用对象的属性设置。,11.1句柄图形的体系结构,句柄图形(HandleGraphics)是MATLAB7.0提供给用户的一种用于创建计算机图形的面向对象的图形系统,该系统提供给用户创建线、字、网格、面及图形用户界面(GUI,有关内容详见本书第11章)的多种绘图指令。第6章所介绍的各种“高级”指令都是以句柄图形为基础生成的,所以句柄图形也称为低层图形。低层指令的调用,没有高层指令那样简明清晰、通俗易懂,但是低层指令可以直接对图形的基本要素进行操作的特点决定了使用者可以让绘制的图形更加个性化,更加具有表现力。,11.1.1句柄图形的等级(hierarchy)关系,句柄图形对象是MATLAB中用来显示数据和创建GUI的基本绘图元素,对象的每个实例(instance)都对应唯一的标识符(Identifier),此标识符称为对象的句柄(handle),句柄由系统设定,用户不可以改变。用户可以利用句柄轻松地操作现有图形的各项特征,即设置对象属性。MATLAB的句柄图形体系结构中包含各种具有继承关系的对象,其关系有“父子”(从属)关系和“兄弟”(平行)关系两种,具体如图所示。,11.12句柄图形的对象类型,本小节主要在11.1.1的基础上向用户详细介绍句柄图形的各级对象。1根对象2图形窗口对象(Figure)3用户界面对象(UIobjects)。4轴对象(Axes)。,11.2MATLAB中对象的属性,MATLAB中各级对象的属性控制其各种外观和显示特性。对象的属性包括公共属性(如对象类型、父、子对象、是否可见等)和不同类型对象的特有属性。例如,通过任何给定的图形对象,用户可以获取窗口中的最后击键、鼠标指针位置,或是最后选中的菜单句柄。,11.3设置和访问对象属性值,MATLAB提供了set和get两个函数,分别可以使用户设置和返回现有图形对象的属性值。利用这两个函数,还可以列出具体固定设置的属性的所有值。两个函数的基本调用格式如下:set(object_handle,PropertyName,NewPropertyValue)returned_value=get(object_handle,PropertyName)以上两函数调用格式中,object_handle代表对象句柄,PropertyName代表属性名称,NewPropertyValue代表用户设置的属性值。读者需要注意的是,函数调用格式中的属性名称为引用的字符串,而属性值则根据与不同的属性而变换类型。,11.3.1设置属性值,调用set函数,并利用对象的返回句柄,用户可以设置现有对象的属性,例如,下面的代码将y轴移动到图形的当前坐标系的左边:set(gca,YAxisLocation,left)如果句柄参数是一个矢量,则MATLAB将所有标识的对象均进行属性的设置。用户还可以运用构架和元胞数组设置属性名称和属性值,这在设置多个对象的相同属性时非常奏效,代码如下:view1.CameraViewAngleMode=manual;view1.DataAspectRatio=111;view1.ProjectionType=Perspective;,11.3.2查询属性值,MATLAB中,用户可以调用get函数来查询对象属性的当前值。单个属性值的查询:调用get函数获取对象属性,用户可以得到该属性中的所有数据,例如,查询当前坐标轴的PlotBoxAspectRatio属性值,代码如下:get(gca,PlotBoxAspectRatio)ans=111如果用户希望查询ColorOrder属性,代码如下:,11.3.3默认属性,以上两小节,向读者介绍了如何设置和查询MATLAB中对象的属性,实际上,MATLAB中的所有对象属性都有系统内建的默认值,即出厂设置值;当然,用户也可以自行定义任何一个MATLAB对象的默认属性值。1默认属性值的搜索.2默认属性值的设置3对象属性的出厂设置值,11.4图形窗口对象的属性,MATLAB图形窗口对象是用于显示MATLAB中图形输出的窗口,所以图形窗口对象的属性可以决定输出窗口的多种特征。本节主要介绍图形窗口对象的属性设置,这些属性与窗口的大小、位置、色彩、曲线绘制方式及指针样式有关。,11.4.1图形窗口的定位,图形窗口对象的位置(Position)属性决定图形窗口在屏幕上的大小和位置,位置属性的默认设置是:图形大小是屏幕大小的1/4,且位于上半屏幕的中间位置。在MATLAB中,图形窗口的位置属性是一个矢量:leftbottomwidthheight。其中,left和bottom确定窗口左下角的位置,而width和height分别确定窗口的宽和高,如图所示。,11.4.2设置色彩属性,色彩属性关系到MATLAB使用系统色彩资源的方式,用户对色彩属性的设置,将影响图形窗口子对象的绘制上色速度和精确度。MATLAB中图形对象的色彩属性如表所示。,11.4.3图像窗口绘制方式和光标指针样式,MATLAB允许用户选择不同的方式来绘制图形,方式的选择主要取决于所绘制图形的类型。决定MATLAB绘制图形的方式有下面4种。BackingStore:当图形被遮挡部分显露出来时,确定是否重绘。DoubleBuffer:为简单动画生成渲染效果。Renderer和RendererMode:指定不同的渲染方法,或由MATLAB选择。除了对绘制方式的选择,MATLAB还提供了多种指针符号,供用户选择。在图形窗口中,图形符号表示指针的位置,用户可以选择系统预定义的15种指针符号,也可以自行设置指针符号。指针符号的属性值、标识及具体功能如表所示。,11.5轴对象的属性,轴对象是图形窗口对象的子对象,也是众多重要对象的父对象(参看11.1节),在句柄图形对象的结构中,它是十分重要的一环。轴对象的属性众多,主要功能为控制图像各方面信息的显示。本节就其重要的属性进行介绍。,11.5.1轴对象的几何属性,同图形窗口对象一样,轴对象的几何属性分别是位置属性Position和单位属性Units,这些属性决定了轴对象在图形窗口对象中的位置、大小和轴对象的单位。值得注意的是,这些属性与图形窗口对象有不同之处。在图形是二维曲线时,轴位框和坐标框两者完全重合,如图所示。,11.5.2轴对象多轴重叠属性,本书在第6章中曾介绍过的subplot函数可以完成单图多轴的绘制,使用subplot函数是把一个图形窗口按位置等分成多个“子块”,分别在每一部分绘制独立的图形。在此基础上,本小节讲解轴对象的“多轴重叠属性”,即允许用户在一个图形窗口对象中绘制多个重叠轴对象。如果用户需要给图形添加注释,可以使用高级绘图函数在同一个轴对象中添加字,这也是第6章所介绍过的内容。另外一种方法是直接在图形窗口再创建一个专门用于注释的轴对象,下面举例说明。,11.5.3单轴对象刻度、刻度标记及坐标轴方向属性,本节以一个实例讲解单轴对象控制刻度、刻度标记及坐标轴方向的属性。,11.5.4轴对象自动模式属性,自动模式属性(Automatic-ModeProperties)又常被称为“照相机属性”。用户可以在轴对象属性的基础上设置MATLAB的照相机属性,MATLAB的照相机属性如表所示。,11.6访问对象句柄,MATLAB中创建的任何对象都由系统赋予一个句柄,所有构造函数的返回值即为其所创建对象的句柄。上一节已经介绍了对对象属性的查询和设置方法。如果需要对对象的属性进行操作(查询或设置),则必须在对象创建之初,就将其句柄保存在变量中,作为准备;如果用户觉得这样做比较繁琐,或者偶尔忘记了保存,还可以调用findobj函数或罗列其父对象的Children属性来获取现有对象的句柄。根对象的句柄为0,而其子对象,图形窗口对象的句柄一般有下面两种情况。整数:默认显示在窗口标题栏中。浮点数:具有完全的MATLAB内部精度。对象句柄的取值类型由图形窗口对象的IntegerHandle属性来控制。,11.61获取当前对象的句柄,在MATLAB中,句柄图形的一个极为重要的概念是当前性(BeCurrent)。例如,当前的窗口即为接受绘制函数输出的窗口;当前的坐标轴就是创建坐标轴子对象的命令输出目标坐标轴;而当前的图形对象则为最后创建的图形对象,或被用户鼠标单击选中的图形对象。用户可以直接把调用绘图函数的返回值存放在一个变量中,那么这个变量就是相应图形的句柄。另外一种获取当前对象句柄的常用方法是调用get函数,在第11.3节中曾经提到过get函数的调用,现在,将系统地阐述一下get函数的调用格式和功能。通常情况下,MATLAB保存3个句柄,分别对应于父对象属性列表中的对象,如图所示。,11.6.2调用findobj函数通过属性值查询对象,MATLAB提供了findobj函数,用于通过对属性值的搜索来查询对象句柄。findobj函数可以快速形成一个结构层次的截面,并获得具有指定属性值的对象句柄,如果用户没有指定起始对象,那么系统默认findobj函数从Root对象开始,搜索与用户指定属性名和属性值相符的所有对象。例如,如图所示,正弦函数sin图形上包含用以标注函数特定值的字对象。,11.6.3使用句柄操作对象,本节主要讲解如何利用句柄,完成对对象的复制和删除操作。1调用copyobj函数复制对象利用MATLAB中的copyobj函数可以将对象a1从其父对象中复制到另一个对象中,生成新的对象a2。a1和a2的区别有2点:2调用delete函数删除对象在MATLAB中,用户可以使用delete函数来删除一个对象,其参数是此对象的句柄。例如,用户若要删除当前的坐标轴,代码如下:delete(gca),11.7控制图形的输出,本书在以前的章节中多次提到,MATLAB允许用户同时打开多个绘图窗口,但是,当前窗口只能有一个,也就是说尽管用户打开的窗口不止一个,但系统运行的结果输出只能显示在众多窗口中的一个中,那么如何使用句柄保证输出的窗口是用户指定的窗口,而同时保证其他窗口不受输出结果的影响,这就是本节要介绍的问题。,11.7.1指定图形输出的目标窗口,在默认情况下,创建图形对象的MATLAB函数把结果显示在当前图形窗口对象和轴对象上(图形对象是轴对象的子对象为前提),用户也可以通过创建函数明确地指定其父对象属性,来使输出到用户需要的父对象中,例如下列代码。plot(1:10,Parent,axes_handle)以上代码中,用户指定了axes_handle为输出目标轴对象的句柄。另外,uicontrol和uimenu函数提供一种更加简便的调用格式,即第一个参数就是指定目标父对象的名称,例如下列代码。uicontrol(Figure_handle,.)uimenu(parent_menu_handle,.),11.7.2为图形对象准备图形窗口对象和轴对象,默认情况下,图形绘制函数将输出的图形对象直接显示在当前的图形窗口中,而并不清除或重设图形窗口的属性,但是,如果图形对象是轴对象的子对象,MATLAB在显示图形对象之前,会将绝大多数的轴对象属性设置为其默认设置。用户可以通过改变图形窗口对象和轴对象的NextPlot属性来改变MATLAB的此种默认设置。在MATLAB7.0中,高级绘图函数在绘制图形之前首先要检查NextPlot属性,然后决定是直接添加图形还是擦除重置图形窗口对象和轴对象;而低级对象创建函数则不检查NextPlot的属性,只是进行简单地添加图形的操作。MATLAB中NextPlot属性的可能取值如表所示。,11.7.3利用newPlot函数指定图形输出目标对象,MATLAB提供给用户newplot函数用以简化编写与NextPlot属性值设置保持一致的M-文件的过程。newplot函数首先检查NextPlot属性值设置情况,然后根据不同的情况采取相应的操作方法。所以,应该把newplot函数放置于任何调用图形对象构造函数的M-文件的起始位置。当用户在M-文件中调用newplot函数时,MATLAB进行如下操作.newplot函数首先检查当前图形窗口对象NextPlot属性值设置情况:如当前尚未创建任何图形窗口对象,则newplot函数首先生成一个,并将其设置为当前图形窗口对象。如NextPlot属性为add,则newplot函数将相应的图形窗口对象设置为当前图形窗口对象。如NextPlot属性为new,则newplot函数创建一个图形窗口对象,并将其设置为当前图形窗口对象。如NextPlot属性为replacechildren,则newplot函数将相应的图形窗口对象中的所有子对象删除,并将删除操作之后的图形窗口对象设置为当前图形窗口对象。如NextPlot属性为replace,则newplot函数将相应的图形窗口对象中的所有子对象删除,并将删除操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年哈尔滨市第四十六中学校招聘教师考试笔试试题(含答案)
- 现场救护专业培训课件教学
- 生产线ERP系统集成创新创业项目商业计划书
- 电子商务平台用户增长与留存创新创业项目商业计划书
- 农副产品种植清洁技术集成创新创业项目商业计划书
- 咖啡香薰产品创新创业项目商业计划书
- 移动智能终端软件创新创业项目商业计划书
- 2025年防城港市市级机关公开遴选考试笔试试题(含答案)
- 2025年东莞市市级机关公开遴选考试笔试试题(含答案)
- 现场急救知识培训新闻稿课件
- 2025年传动部件行业当前市场规模及未来五到十年发展趋势报告
- 小学科学新教科版二年级上册第一单元 造房子教案(共6课)(2025秋)
- 合同签订履行风险防范培训课件
- ISO28000:2022供应链安全管理体系
- 健康安全危险源识别、风险评估和风险控制表
- GB 4234.1-2017外科植入物金属材料第1部分:锻造不锈钢
- GB 19522-2004车辆驾驶人员血液、呼气酒精含量阈值与检验
- 深圳市失业人员停止领取失业保险待遇申请表样表
- 三年级上册音乐全册教材分析
- 提高输液执行单签字规范率品管圈汇报书模板课件
- SAP Analytics Cloud分析云解决方案
评论
0/150
提交评论