资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,11/7/2009,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第五章 高级图形处理功能,目的,:,1,、更深入地理解高层绘图指令,从而可绘制出更精细、更生动、更个性的图形;,2,、能利用低层图形指令和图形对象属性开发专用绘图函数。,第五章 高级图形处理功能目的:,一、句柄图形体系,句柄图形,(,Handle Graphics,)是一种面向对象的绘图系统。该系统提供创建计算机图形所必需的各种软件。它所支持的指令,可直接创建线、文字、网线、面以及图形用户界面。,各种,MATLAB,高层,(,High-level,)图形指令(如,plot,mesh,)都是以句柄图形软件为基础写成的。也正是这个原因,句柄图形也被称为,低层,(,Low-level,)图形。,一、句柄图形体系句柄图形(Handle Graphics)是,1,、图形对象,把用于数据可视和界面制作的基本绘图要素称为句柄图形对象(,Handle graphics object,)。,每个图形对象可以被独立地操作。,在,MATLAB,中生成的每个具体图形都由若干不同对象构成。每个具体图形不必包含全部对象,但每个图形必须具备根对象(根屏幕)和图形窗。,1、图形对象把用于数据可视和界面制作的基本绘图要素称为句柄图,2,、对象句柄,每个具体对象都有一个,“,与生俱来、终生不变,”,的独特,“,身份(,Identifier,),”,,即句柄(,Handle,)。,句柄是存取图形对象唯一规范识别符。不同对象的句柄不可能重复和混淆。,每个计算机,根对象只有一个,即屏幕。它的句柄总是数字,0,。而图形窗(,Figure Windows,)的句柄总是正整数,它用来标识图形窗的序号。除以上两种对象外,其余对象的句柄则是双精度浮点数。,注意,:对根屏幕、图形窗对象来说,数字可直接作为调用对象的句柄。但不要企图通过直接输入浮点数,作为其他对象的句柄;这些对象的句柄只能由相关指令运作而得。,2、对象句柄每个具体对象都有一个“与生俱来、终生不变”的独特,3,、句柄图形树结构,在句柄图形体系中,各图形对象并不平等,它们之间的关系可用树结构层次表示。,3、句柄图形树结构在句柄图形体系中,各图形对象并不平等,它们,图形对象的基本要素以根屏幕为先导,图形对象之间的关系为父代与子代的关系,窗口,1,窗口,n,窗口,2,界面控制,界面菜单,轴,线,面,字,块,像,根屏幕,图形对象的基本要素以根屏幕为先导图形对象之间的关系为父代与子,说明:,根,:,图形对象的根,对应于计算机屏幕,根只有一个,其它所有图形对象都是根的后代。,图形窗口,:,根的子代,窗口的数目不限,所有图形窗口都是根屏幕的子代,除根之外,其它对象则是窗的后代。,界面控制,:,图形窗口的子代,创建用户界面控制对象,使得用户可采用鼠标在图形上作功能选择,并返回句柄。,说明:根:图形对象的根,对应于计算机屏幕,根只有一个,其,界面菜单,:,图形窗口,的子代,创建用户界面菜单对象,轴,:,图形窗口的子代,创建轴对象,并返回句柄,线面字块像的父辈,线,:,轴的子代,创建线对象,面,:,轴的子代,创建面对象,字,:,轴的子代,创建字对象,块,:,轴的子代,创建块对象,像,:,轴的子代,创建图像对象,界面菜单:图形窗口的子代,创建用户界面菜单对象,4,、对象属性,所有对象都有一组定义和刻画其外貌和性状的属性(,Properties,)。,属性由两部分组成:属性名和属性值,即二元对(,Property-Name,,,Property-Value,),在创建或修改属性的指令中,属性名和属性值总是成对出现。,4、对象属性所有对象都有一组定义和刻画其外貌和性状的属性(P,属性名是英文词组字符串。该英文词组每个单词的第一个字母大写,而单词间没有空格,例如,LineStyle,,,ColorMap,等。,在指令中援引属性名时,为输入方便,,MATLAB,采取了两个,措施,:,不分字母大小写,都同样识别;,只要不引起歧义,属性名不必写全。比如,lines,就代表,LineStyle,.,不同的属性值将使对象具有不同的表现。,属性名是英文词组字符串。该英文词组每个单词的第一个字母大写,,5,、缺省属性,在创建图形对象时,,MATLAB,并不需要对每个属性加以定义。,若用户不对属性加以定义,,MATLAB,总会自动给对象的每个属性赋予,“,厂家定义(,Factory-defined,),”,的属性值。,若希望创建具有个性的图形,就需要通过指令对某些属性进行定义。属性值的这种定义方式称为,“,宗量,”,赋值方式。,5、缺省属性在创建图形对象时,MATLAB并不需要对每个属性,6,、句柄图形的功能,句柄图形可以随意改变,matlab,生成图形的方式。,句柄图形允许你定制图形的许多特性,无论是对图形做一点小改动,还是影响所有图形输出的整体改动。,句柄图形的特性高层绘图函数是无法实现的,6、句柄图形的功能句柄图形可以随意改变matlab生成图形的,二、图形对象的操作,除根屏幕外,所有图形对象都由与之同名的指令创建。,创建对象的低层指令(,1,),指令名,功能,调用格式举例,figure,创建图形窗,h=figure(n)n,为正整数。打开或创建第,n,号图形窗,axes,创建轴,h=axes(,position,left,bottom,width,height),定义坐标盒的位置和尺寸,line,创建线,h=line(x,y,z),绘制向量,x,y,z,确定的直线。如果不指定,z,,则在,x-y,平面上画线,surface,创建面,h=surface(x,y,z,c)x,y,z,定义三维曲面,,c,是色彩矩阵。,二、图形对象的操作除根屏幕外,所有图形对象都由与之同名的指令,创建对象的低层指令(,2,),指令名,功能,调用格式举例,rectangle,创建方,h=rectangle(,position,x,y,w,h,curvature,xc,yc),x,y,左下顶点坐标,,w,h,长方形的高和宽;,xc,yc,曲率,patch,创建块,h=patch(,faces,fac,vertices,vert),vert,为顶点矩阵,,fac,为定义多边形的顶点序号矩阵,image,创建象,h=image(x)x,为图像数据矩阵,text,创建字,h=text(x,y,string,)x,y,指定字符串,string,的标注位置,light,创建光,h=light(,position,1 0 0),设置入射光的方向。它影响面、块对象的渲染,uicontrol,创建用户界面控件,h=uicontrol(,property,value),property/value,指定界面的控件类型,uimenu,创建用户界面菜单,h=uimenu(,property,value),property/value,指定图形窗口上方的菜单行式,创建对象的低层指令(2)指令名功能调用格式举例rectang,对象句柄的获取方法,要设置图形对象属性值,首先要知道该对象的句柄。,1,、基本方法,从图形创建指令获得句柄,追溯法获取图柄,当前对象句柄的获取,根据对象特性获取句柄,根据对象,“,诨名,”,获取句柄,2,、句柄获取示例,对象句柄的获取方法要设置图形对象属性值,首先要知道该对象的句,1,、从图形创建指令获得句柄,所有高层或低层指令(在此用,GraphicCommand,表示)都能通过以下格式产生句柄:,H_GC=GraphicCommand(,),绘图同时给出句柄的调用指令,H_GC,。,1、从图形创建指令获得句柄所有高层或低层指令(在此用Grap,2,、追溯法获取图柄,若一个对象的句柄已知,那么可用如下格式追溯获得其,“,父,”,或,“,子,”,的句柄:,H_pa=get(H_known,Parent,),获取,H_known,句柄对象之,“,父,”,的句柄。,H_ch=get(H_known,Children,),获取,H_known,句柄对象之,“,子,”,的句柄。,2、追溯法获取图柄若一个对象的句柄已知,那么可用如下格式追溯,3,、当前对象句柄的获取,MATLAB,有如下三个专用获取图柄的指令:前两个是直接指令式;后一个必须与鼠标配合使用。,gcf,返回当前图形窗口的句柄,gca,返回当前轴的句柄,gco,返回,“,被鼠标最近点击,”,的图形对象的句柄,3、当前对象句柄的获取MATLAB有如下三个专用获取图柄的指,4,、根据对象特性获取句柄,利用对象特性搜索那对象句柄可以得到较高的搜索速度。具体指令如下:,H=findobj(H_ori,PN,PV),在,H_ori,指定对象上,寻找与属性对(,PN,PV,)匹配的对象句柄,4、根据对象特性获取句柄利用对象特性搜索那对象句柄可以得到较,5,、根据对象,“,诨名,”,获取句柄,可以通过,Tag,属性,给对象一个,“,诨名,”,。此后,就可以通过,“,诨名,”,获取该对象的句柄。,设置,“,诨名,”,的两个方法:,创建时赋名,如,subplot(3,2,4),plot(x,y,Tag,A4,);,用,set,赋名,如,subplot(3,2,4),h=plot(x,y),set(h,Tag,A4,),据诨名获取对象句柄,:,如果屏幕上有多个图形窗,且有的窗又有多个子图,那么获取带,“,诨名,”,对象句柄的简便指令是:,hax=fidobj(0,Tag,A4,),。,5、根据对象“诨名”获取句柄可以通过Tag属性,给对象一,【,例,】,高层绘图,clf reset;H_mesh=mesh(peaks(20),H_grand_parent=get(get(H_mesh,Parent),Parent),disp(,图柄 轴柄,),disp(gcf gca),【例】高层绘图,【,例,】,低层指令绘图,clf reset,t=(0:100)/100*2*pi;,H_line=line(Xdata,t,Ydata,sin(t),text(pi,0.8,fontsize14sin(t),H_c=get(get(H_line,parent),children),T=get(H_c,Type),【例】低层指令绘图clf reset,t=(0:100)/1,【,例,】findobj,指令的使用,clf reset,t=(0:pi/100:2*pi);tt=t*1 1;yy=sin(tt)*diag(0.5 1);,plot(tt,yy),Hb=findobj(gca,Color,b),【例】findobj指令的使用clf reset,t=(0:,三、对象属性的获取和设置,创建对象时设置属性,H_GC=GraphicCommand(,PN,PV),利用,“,属性对,”,设置的绘图指令,H_GC=GraphicCommand(,PS),利用,“,构架,”,进行属性设置的绘图指令,get,和,set,对象属性的缺省设置和查询,属性查询和设置示例,三、对象属性的获取和设置创建对象时设置属性,1,、,get,和,set,get(H),获取,H,句柄对象所有属性的当前值,get(H,PN),获取,H,句柄对象由,PN,所指定属性的当前值,set(H),显示,H,句柄对象的所有可设置属性名和全部供选属性值,set(H,PN),显示,H,句柄对象,PN,指定属性名的全部供选属性值,set(H,PN,PV,),设置,H,句柄对象的,PN,属性名取,PV,属性值,set(H,PS),利用构架数组设置,H,的属性值,1、get 和 setget(H)获取H句柄对象所有属性,2,、对象属性的缺省设置和查询,get(H,D
展开阅读全文