低层绘图操作1

  • 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');%对绿色曲线进行设置

  

原文地址:https://www.cnblogs.com/freesblog/p/4453014.html