10 句柄图形
与第7章的高层指令相比,本章的内容更深入MATLAB可视化功能的内核。编写本章的目的有两个:一,使读者更深入地理解高层绘图指令,从而可绘制出更精细更生动更个性的图形;二,使读者能利用低层图形指令和图形对象属性开发专用绘图函数。
本章在内容安排上有如下考虑:
1、
保证概念、结构和方法的完整性 :本章的前 6 节内容按由表及里、由浅入深的原则系统阐述句柄图形体系、图形对象、属性和操作方法。
2、突出要点、新点和难点 :句柄图形体系有 11 个基本图形对象,每个对象的属性少则 20 几个,多则近百个。对此, MATLAB 自带资料有详尽的文字说明。因此,本章只对最常用的、不可或缺的、 MATLAB 老版本中所没有的、以及较难掌握的内容进行说明。
3、强调“可操作性”体现“范例引导概念”的本书宗旨 :针对 MATLAB 自带资料缺少完整、可操作应用实例的 弱点,本章设计了 17 个算例,其中 9 个精心设计的完整应用范例就占本章一半以上篇幅。读者通过阅读或操作这些范例,可掌握各指令、属性之间的有机配合,从而更具体更真切地理解句柄图形。
在本章内容正式展开之前,先把 MATLAB 随带资料中涉及各对象属性的文件及查阅方法罗列如下。读者应重视这些最原始、最权威、最细节、任何其它书籍不能代替的资料。
4、使用 Adobe Acrobat Reader 阅读(或打印)以下 PDF 文件
help\pdf_doc\matlab\graphg.pdf ;
help\pdf_doc\matlab\ref\refbook2.pdf ;
5、使用 Netscape Navigator 或 Microsoft Internet Explorer 打开以下引导文件
help\techdoc\infotool\hgprop\doc_frame.htm
6、使用指令 help 或 help window 图形用户界面查看有关对象的资料。如 help figure 可直接得到有关图对象的属性描述。
7、利用 get , set 指令在 MATLAB 指令窗中,直接查询对象属性。
10.2 图形对象的操作
10.2.2 对象句柄的获取方法
10.2.2.2 句柄获取示例
【 * 例 10.2.2 .2-1 】画网线图,并得相应句柄;追溯法找所在图形窗句柄; gcf 和 gca 演示。
clf reset;H_mesh=mesh(peaks(20))
H_grand_parent=get(get(H_mesh,'Parent'),'Parent')
disp(' 图柄 轴柄 '),disp([gcf gca]) % 显示当前图形窗和轴的句柄
H_mesh =
73.0135
H_grand_parent =
1
图柄 轴柄
1.0000 72.0051
图 10.2.2 .2_1
【 * 例 10.2.2 .2-2 】低层指令绘图,获得句柄;获取同轴上字对象的句柄和相应对象类型。
clf reset,t=(0:100)/100*2*pi;H_line=line('Xdata',t,'Ydata',sin(t))
text(pi,0.8,'\fontsize{14}sin(t)')
H_c=get(get(H_line,'parent'),'children') % 轴之所有“子”的句柄
T=get(H_c,'Type') % 轴之所有“子”对象名称
H_line =
72.0052
H_c =
74.0116
72.0052
T =
'text'
'line'

图 10.2.2 .2_2
【 * 例 10.2.2 .2-3 】 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') % 在当前轴上寻找蓝线的句柄
Hb =
72.0050

图 10.2.2 .2_3