- 5.5.1 图形对象及其句柄
1.图形对象
2.图形对象句柄
例: x=linspace(0,28pi,30); y=sin(x); h0=plot(x,y,'rx') %曲线对象的句柄 h1=gcf %图形窗口句柄 h2=gca %坐标轴句柄 h3=findobj(gca,'Marker','x')
5.5.2图形对象属性
1.属性名与属性值
每种图形对象都具有各种各样的属性.
例:LineStyle是曲线对象的一个属性名,它的值决定着线型取值可以是'-'、':'、'-·'、'--'、''和'none'。
在属性名的写法中,不区分字母的大、小写,而且在不引起岐义前提 下,属性名不必写全。
例;lines就代表LineStyle。此外,属性名要用单撇号括起来。
2.属性的操作
创建一个对象时,必须给对象的各种属性赋予必要的属性值,否则,系统自动使用默认属性值。
用户可以通过set函数重新设置对象属性,也可通过get函数获取这些属性值。
set调用格式:
set(句柄,属性名1,属性值1,属性名2,属性值2,...) 其中句柄用于指明要操作的对象。 如果在调用set函数时省略全部属性名和属性值,则将显示出句柄所有的允许属性。 例:绘制正弦曲线并保存曲线句柄,然后改变曲线属性 x=0:pi/10:2*pi; h=plot(x,sin(x)); set(h,'color','r','LineStyle',':','Marker','p');%颜色,线形和数据点的标记符号
get调用格式:
V=get(句柄,属性名) 其中V是返回的属性值。如果在调用get函数时,省略属性名,则将返回句柄所有的属性值。 用get 函数来获取上述曲线的属性一值。例如 : col=get(h,'color'); 将得到曲线的颜色属性值[1 0 0],即红色。 用get函数可获取屏幕的分辨率:v=get(0,'ScreenSize') >>col = 1 0 0 >> v=get(0,'ScreenSize') v = 1 1 1600 900 其中(1,1)为屏幕左下角坐标,(1600,900)为宽高 可以根据屏幕分辨率来设置容器大小
3.对象的公共属性
图形对象具有各种各样的属性,有些属性一是所有对象共同具备的:
Children属性:该属性的取值是该 对象所有子对象的句柄组成的一个向量。 Parent属性:该属性的取值是该对象的父对象的句柄。显然图形窗口对象的Parent属性总是0 Tag属性:该属性的取值一个字符串,它相当于给该对象定义了一个标识符。 定义了Tag属性后,在任何程序中都可以通过findobj函数获取该标识符所对应图形对象的柄。 例如 :hf=findobj(0,'Tag’,‘Flag1')将会在屏幕对象用户其子对象中寻找 Tag属性为Flag1的对象,并返回句柄。 UserData属性。该属性的取值是一个矩阵,默认值为空矩阵。 在程序设计中,可以将一个图形对象有关的比较重要的数据存储在这个属性中,借此可以达到传递数据的目的。 具体做法是,先用set函数给某一句柄添加一些附加数据(一个矩阵),如果想使用这样的矩阵,再用get函数调用出来。 Visible属性。该属性的取值是on(默认值)或off。决定着图形窗口是否在屏幕上显示出来。当它的值 为off时,可以用来隐藏该图形 ButtonDownFcn属性。该属性的取值是一个字符串,一般是某个M文件的文件名或一小段Matlab语句。图形对象确定了一个作用区域,当单击该区域时,Matlab自动执行的程序段。 CreateFcn属性。该属性的取值是一个字符串,一般是某个M文件的文件名或一小段Matlab语句。当创建该对象时,Matlab自动执行此程序段。 DeleteFcn属性。该属性的取值是一个字符串,一般是某个M文件的文件名或一小段Matlab语句。当取消该对象时,matlab自动执行该程序段。
例:在同一坐标下画红、绿两条不同曲线,希望获得绿色曲线的句柄,并对其进行设置。
>> x=0:pi/50:2*pi; y=sin(x); z=cos(x); plot(x,y,'r',x,z,'g'); H=get(gca,'Children');%获取两曲线句柄向量H for k=1:length(H) if get(H(k),'Color')==[0 1 0]%[0 1 0]代表绿色 Hg=H(k); end end pause%便于观察设置效果 set(Hg,'LineStyle',':','Marker','p');%对绿色曲线进行设置