当前位置:
文档之家› 第6章 matlab图形句柄
第6章 matlab图形句柄
绘制二维曲线时,通过选择不同的选项可以设置 曲线的颜色、线型和数据点的标记符号,下面用图形 句柄操作来实现。 绘制正弦曲线的程序如下: clc;clear;close all; x=0:pi/10:2*pi; h=plot(x,sin(x)) set(h,'color','r','linestyle',':','Marker','p')
Children属性:该属性的取值是该对象所 有子对象的句柄组成的一个向量。 get(gca,'children') 得到当前坐标轴对象的 子对象(曲线)的句柄值。
Parent属性:该属性的取值是该对象的父 对象的句柄。 get(gcf,'parent') 得到图形窗口的父对象 (计算机屏幕)的句柄值0。
MATLAB为每个图形窗口提供了很多属性。 这些属性及其取值控制着图形窗口对象。
除公共属性外,其他常用属性如下: MenuBar属性、Name属性、NumberTitle属性、 Resize属性、Position属性、Units属性、Color 属性、Pointer属性、KeyPressFcn(键盘键按下 响应)、WindowButtonDownFcn(鼠标键按下响 应)、WindowButtonMotionFcn(鼠标移动响应) 及WindowButtonUpFcn(鼠标键释放响应)等。
常用的获取图形对象句柄的对象
函数 gcf gca gco findobj 功能 获取当前图形窗口的句柄(get current figure) 获取当前坐标轴的句柄(get current axis) 获取被选中图形对象的句柄(get current object) 按照指定的属性来获取图形对象的句柄
2.图形对象句柄
MATLAB在创建每一个图形对象时,都为 该对象分配唯一的一个值,称其为图形对象句 柄(Handle)。句柄是图形对象的唯一标识符,不 同对象的句柄不可能重复和混淆。 计算机屏幕作为根对象由系统自动建立, 其句柄值为0,而图形窗口对象的句柄值为一正 整数,并显示在该窗口的标题栏,其他图形对 象的句柄为浮点数。MATLAB提供了若干个函 数用于获取已有图形对象的句柄。
ButtonDownFcn属性:该属性的取值是一个 字符串,一般是某个M文件名或一小段 Matlab程序。当鼠标指针位于对象之上,用
户按下鼠标键时执行的字符串。 如: clc;clear;close all; figure set(gcf,'buttondown','example4_10');
如果在调用get函数时省略属性名,则将 返回句柄所有的属性值。 clc;clear;close all; x=0:pi/10:2*pi; h=plot(x,sin(x)) set(h,'color','r','linestyle',':','Marker','p') get(h)
用get函数可获取屏幕的分辨率: V=get(0,'screensize')
例1 绘制曲线并查看有关对象的句柄。 clc;clear;close all; x=linspace(0,2*pi,30); y=sin(x); h0=plot(x,y,'rx') %曲线对象的句柄; h1=gcf %图形窗口句柄; h2=gca %坐标轴句柄; h3=findobj(gca,'Marker','x') %坐标轴上曲 线的句柄;
MenuBar属性:该属性的取值可以是figure(缺 省值)或none,用来控制图形窗口是否应该具有 菜单条。如: clc;clear;close all; figure; pause set(gcf,'menubar','none'); pause set(gcf,'menubar','figure');
Tag属性:该属性的取值是一个字符串,它相当 于给该对象定义了一个标识符。定义了Tag属 性后,在任何程序中都可以通过findobj函数 获取该标识符所对应图形的句柄。如:
clc;clear;close all; x=0:pi/10:2*pi; h=plot(x,sin(x)) set(h,'tag','flag1') hf=findobj(0,'tag','flag1')
第六章 MATLAB图形句柄
6.1 图形对象及其句柄 6.2 图形窗口与坐标轴 6.3 低层绘图操作
第四章已介绍很多MATLAB高层绘图 函数,这些函数都是将不同的曲线或曲面 绘制在图形窗口中,而图形窗口也就是由 不同图形对象(如坐标轴、曲线、曲面或 文字等)组成的图形界面。 MATLAB给每个图形对象分配一个标 识符,称为句柄,以后可以通过该句柄对 该图形对象的属性进行设置,也可以获取 有关属性,从而能够更加自主地绘制各种 图形。
6.1 图形对象及其句柄
1.图形对象 MATLAB中的每一个具体的图形都是由 若干个不同的图形对象组成的。 所有的图形对象都按父对象和子对象的 方式组成层次结构,如图9-1。
计算机屏幕 图形窗口 用户界面对象 坐标轴 标注对象
核心对象
绘图象
组对象
图形对象的层次结构
♠每个具体图形不一定包含全部对象,但必 须带有计算机屏幕和图形窗口对象; ♠计算机屏幕是产生其他对象的基础,称为 根对象;
用set函数显示句柄所有的允许属性: clc;clear;close all; x=0:pi/10:2*pi; h=plot(x,sin(x)) set(h)
get函数的调用格式为: V=get(句柄,属性名) 其中V是返回的属性值。 用get函数获取上述正弦曲线的属性值: clc;clear;close all; x=0:pi/10:2*pi; h=plot(x,sin(x)) set(h,'color','r','linestyle',':','Marker','p') col=get(h,'color')
例2 在同一坐标下绘制红、绿两根不同曲线,希 望获得绿色曲线的句柄,并对其进行设置。
clc;clear;close all; x=0:pi/50:2*pi; y=sin(x); z=cos(x); plot(x,y,'r',x,z,'g'); %绘制两条不同的曲线; Hl=get(gca,'children') %获取两曲线的句柄向量Hl; for k=1:size(Hl) if get(Hl(k),'color')==[0 1 0] %[0 1 0]代表绿色; Hlg=Hl(k); end end pause %便于观察设置前后的效果; set(Hlg,'linestyle',':','marker','p');
6.2 图形窗口与坐标轴
♠除根对象外,所有图形对象都可以由与之 同名的低层函数创建。所创建的对象置于 适当的父对象之中,当父对象不存在时, Matlab会自动创建它。如:Line函数。 ♠创建对象的低层函数调用格式类似,关键 要了解对象的属性及其取值。前面已介绍 各对象的公共属性,下面介绍图形窗口和 坐标轴的创建方法及特殊属性。
ans = 1 2 4 5
3 6
Visible属性:该属性的取值是on(缺省值)或 off。当它的值为off时,可以用来隐藏该 图形窗口的动态变化过程,如窗口大小的 变化、颜色的变化等。 如:
peaks pause(5) set(gcf,'visible','off') pause(5) set(gcf,'visible','on')
直接对图形句柄进行操作的绘图方法 称为低层绘图操作。相对于高层绘图,低 层绘图操作控制和表现图形的能力更强, 事实上,MATLAB的高层绘图函数都是利 用低层绘图函数建立起来的,相当于系统 为用户做了许多细节性的工作,用起来很 方便。 但有时单靠高层绘图不能满足要求, 例如,绘制特殊图形、建立图形用户界面 等,需要对图形句柄操作。
Type属性:表示该对象的类型。显然,该 属性的取值是不可改变的。 如:
clc;clear;close all; x=0:pi/10:2*pi; h=plot(x,sin(x)) get(h,'type') ans = line
UserData属性:该属性的取值是一个矩阵, 缺省值为空矩阵。在程序设计中,可以将 一个图形对象有关的比较重要的数据存储 在这个属性中,借此可以达到数据传递的 目的。如: set(0,'userdata',[1 2 3;4 5 6]) get(0,'userdata')
clc;clear;close all; x=0:pi/10:2*pi; plot(x,sin(x),'rp:');
用图形句柄操作的方法绘制以上正弦曲线时, 先用缺省属性绘制曲线并保存曲线句柄,然后通过 改变曲线的属性来设置曲线的颜色、线型和数据点 的标记符号。 当然,还有很多其他属性,可对曲线 作进一步的控制。
Name属性:该属性的取值可以是任何字符 串,它的缺省值为空。如: clc;clear;close all; figure; pause set(gcf,'name','My pictures'); pause set(gcf,'name','');