您好,欢迎访问三七文档
MATLABR2007基础教程清华大学出版社2020年2月29日第1页第10章句柄图形MATLABR2007基础教程清华大学出版社教学目标教学重点教学内容MATLABR2007基础教程清华大学出版社2020年2月29日第2页教学目标了解MATLAB图形对象及属性掌握MATLAB图形对象属性的设置及查询掌握MATLAB图形对象句柄的访问及操作MATLABR2007基础教程清华大学出版社2020年2月29日第3页教学重点MATLAB图形对象及属性MATLAB图形对象句柄的访问及操作MATLABR2007基础教程清华大学出版社2020年2月29日第4页教学内容MATLAB图形对象及属性MATLAB图形对象属性的设置及查询MATLAB图形对象句柄的访问及操作MATLABR2007基础教程清华大学出版社2020年2月29日第5页MATLAB的图形对象图形对象是MATLAB显示数据的基本绘图元素,每个对象拥有一个唯一的标志,即句柄。通过句柄可以对已有的图形对象进行操作,控制其属性。MATLAB中这些对象的组织形式为层次结构,如图所示。MATLABR2007基础教程清华大学出版社2020年2月29日第6页Root对象Root对象即根对象。根对象位于MATLAB层次结构的最上层,因此在MATLAB中创建图形对象时,只能创建唯一的一个Root对象,而其他的所有对象都从属于该对象。根对象是由系统在启动MATLAB时自动创建的,用户可以对根对象的属性进行设置,从而改变图形的显示效果。MATLABR2007基础教程清华大学出版社2020年2月29日第7页Figure对象Figure是MATLAB显示图形的窗口,其中包含菜单栏、工具栏、用户接口对象、右键菜单、坐标系及坐标系的子对象等。MATLAB允许用户同时创建多个图形窗口。如果当前尚未创建图形对象(即Figure窗口),则调用任意一个绘图函数或图像显示函数(如plot函数和imshow函数等)均可以自动创建一个图形窗口。如果当前根对象已经包含了一个或多个图形窗口,则总有一个窗口为“当前”窗口,且该窗口为所有当前绘图函数的输出窗口。MATLABR2007基础教程清华大学出版社2020年2月29日第8页Core对象Core对象包括基本的绘图单元,包括线条、文本、多边形及一些特殊对象,如表面图,表面图中包括矩形方格、图像和光照对象,光照对象不可视,但是会影响一些对象的色彩方案。MATLAB中的核心对象(Core)如表所示。对象功能axesAxes对象定义显示图形的坐标系,Axes对象包含于图形中image图形对象为一个数据矩阵,矩阵数据对应于颜色。当矩阵为二维时表示灰度图像,三维时表示彩色图像light坐标系中的光源。Light对象影响图像的色彩,但是本身不可视line通过连接定义曲线的点生成patch填充的多边形,其各边属性相互独立。每个Patch对象可以包含多个部分,每个部分由单一色或插值色彩组成rectangle二维图像对象,其边界和颜色可以设置,可绘制变化曲率的图像,如椭圆surface表面图形text图形中的文本MATLABR2007基础教程清华大学出版社2020年2月29日第9页Plot对象MATLAB的一些高级绘图函数可以创建Plot对象。通过Plot对象的属性可以快速访问其包含的核心(Core)对象的重要属性。Plot对象的上级对象可以为坐标系(Axes)对象或者组(Group)对象。MATLAB中能够生成Plot对象的函数及其功能如表所示。函数功能areaseries用于创建area对象barseries用于创建bar对象contourgroup用于创建contour对象errorbarseries用于创建errorbar对象lineseries供曲线绘制函数(plot和plot3等)使用quivergroup用于创建quiver和quiver3图形scattergroup用于创建scatter和scatter3图形stairseries用于创建stair图形stemseries用于创建stem和stem3图形surfaceplot供surf和mesh函数使用MATLABR2007基础教程清华大学出版社2020年2月29日第10页Annotation对象Annotation对象是MATLAB中的注释内容,存在于因此的坐标系中,该坐标系的范围为整个图形窗口。用户可以通过规范化坐标将注释对象放置于图形窗口中的任何位置。规范化坐标的范围为从0到1,窗口左下角为[0,0],右上角为[1,1]。MATLABR2007基础教程清华大学出版社2020年2月29日第11页Group对象Group对象允许用户将多个坐标系子对象作为一个整体进行操作。如,可以设置整个组为可视或者不可视,或者通过改变组对象的属性重新设置其中所有对象的位置等。MATLAB中有两种类型的组:–hggroup:如果需要创建一组对象,并且通过对该组中的任何一个对象进行操作而控制整个组的可视性或选中该组,则使用hggroup。hggroup通过hggroup函数创建。–hgtransform:当需要对一组对象进行变换时创建hgtransform,其中变换包括选中、平移、尺寸变化等。hggroup组和hgtransform组之间的差别在于hgtransform可以通过用变换矩阵对其中的所有子对象进行操作。MATLABR2007基础教程清华大学出版社2020年2月29日第12页图形对象的属性图形对象的属性控制图形的外观和显示特点。图形对象的属性包含公共属性和特有属性。属性描述BeingDeleted当对象的DeleteFcn函数调用后,该属性的值为onBusyAction控制MATLAB图形对象句柄响应函数点中断方式ButtonDownFcn当单击按钮时执行响应函数Children该对象所有子对象的句柄Clipping打开或关闭剪切功能(只对坐标轴子对象有效)CreateFcn当对应类型的对象创建时执行DeleteFcn删除对象时执行该函数HandleVisibility用于控制句柄是否可以通过命令行或者响应函数访问HitTest设置当鼠标点击时是否可以使选中对象成为当前对象Interruptible确定当前的响应函数是否可以被后继的响应函数中断Parent该对象的上级(父)对象Selected表明该对象是否被选中SelectionHighlight指定是否显示对象的选中状态Tag用户指定的对象标签Type该对象的类型UserData用户想与该对象关联的任意数据Visible设置该对象是否可见MATLABR2007基础教程清华大学出版社2020年2月29日第13页图形对象属性值的设置和查询属性值的设置对象的默认属性值属性值的查询MATLABR2007基础教程清华大学出版社2020年2月29日第14页属性值的设置MATLAB中,set函数可以用于设置对象的各项属性:set(gca,'YAxisLocation','right')通过set函数查看一个对象的所有可设置属性的所有可能的值set(axes)ActivePositionProperty:[position|{outerposition}]ALimALimMode:[{auto}|manual]AmbientLightColorBox:[on|{off}]……MATLABR2007基础教程清华大学出版社2020年2月29日第15页对象的默认属性值默认属性值的搜索–MATLAB对默认属性值的搜索从当前对象开始,沿着对象的从属关系图向更高的层次搜索,直到发现系统的默认值或用户自己定义的值。–定义对象的默认值时,在对象从属关系图中,该对象越靠近Root(根)对象,其作用的范围就越广。–如果用户在对象从属关系图的不同层次上定义同一个属性的默认值,则MATLAB将会自动选择最下层的属性值作为最终的属性值。需要注意的是,用户自定义的属性值只能影响到该属性设置后创建的对象,之前的对象都不受到影响。默认属性值的设–指定MATLAB对象的默认值,需要首先创建一个以“Default”开头的字符串,该字符串的中间部分为对象类型,末尾部分为属性的名称。MATLABR2007基础教程清华大学出版社2020年2月29日第16页属性值的查询MATLAB中,利用get函数可以查询对象属性的当前值。MATLABR2007基础教程清华大学出版社2020年2月29日第17页图形对象句柄的访问图形对象句柄的取值当前图形句柄通过属性值查找对象图形对象的复制图形对象的删除MATLABR2007基础教程清华大学出版社2020年2月29日第18页图形对象句柄的取值每个图形对象句柄都有一个特定的值,但不同的对象,句柄的取值类型也略有不同。–1.Root根对象的句柄取值为0。–2.Figure对象的属性IntegerHandle控制该对象所获取的句柄的取值类型,IntegerHandle的默认值为on,此时句柄为整数,显示在窗口标题栏中;当该属性的值为off时其句柄为具有完全MATLAB内部精度的浮点数。–3.所有其他图形对象的句柄取值为浮点类型,在引用这些句柄时,必须保持其精度的完整。MATLABR2007基础教程清华大学出版社2020年2月29日第19页当前图形句柄在MATLAB中,句柄图形有一个重要概念为当前性(BeingCurrent)。当前的图形对象即为最后创建的图形对象,或最后被鼠标点中的图形对象。在通常情况下,MATLAB保存三个“当前句柄”,三个句柄为层次关系。这些属性能够使得用户方便的获取这些关键对象的句柄,其方法如下:1.get(0,'CurrentFigure'),获取当前图形窗口对象的句柄;2.get(gcf,'CurrentAxes'),获取当前图形窗口对象中当前坐标轴对象的句柄;3.get(gcf,'CurrentObject'),获取当前图形窗口对象中当前对象的句柄。MATLABR2007基础教程清华大学出版社2020年2月29日第20页通过属性值查找对象MATLAB的findobj函数可以用于快速遍历对象从属关系表并获取具有特定属性值的对象句柄的方法。如果用户没有指定起始对象,那么findobj函数从根对象开始查找。该函数的调用格式为:–h=findobj,返回根对象及其所有的从属句柄,返回值为一个列向量。–h=findobj('PropertyName',PropertyValue,...),返回满足'PropertyName'属性的值为PropertyValue的所有句柄,可以同时设置多个条件。–h=indobj('PropertyName',PropertyValue,'-logicaloperator','PropertyName',PropertyValue,...),返回所有满足指定表达式的句柄,其中的逻辑操作符可以是–and、-or、-xor或–not。MATLABR2007基础教程清华大学出版社2020年2月29日第21页–h=findobj('-regexp','PropertyName','regexp',...),以正则表达式的方式进行条件匹配,相当于将属性'PropertyName'的值传递给函数regexp,得到regexp(PropertyValue,'regexp')。该语句返回满足匹配的句柄。–h=findobj('-property','PropertyName'),返回所有具有指定属性的句柄。–h=findobj(objhandles,...),在objhandles指定的对象及其子对象中查找。–h=findobj(objhandles,'-depth',d,...),指定查找的深度。参数d控制查找的深度,如果将d设置为inf,则与默认效果相同,查找所有深度;如果设置d为0,则与使用参数flat的效果相同。–h=findobj(objhandles,'flat','Prop
本文标题:10.句柄图形
链接地址:https://www.777doc.com/doc-4076465 .html