当前位置:
文档之家› 第8章 matlab图形句柄
第8章 matlab图形句柄
8.1 图形对象及其句柄
MATLAB的图形系统是面向对象的,图形对象是MATLAB为了描述具有 类似特征的图形元素而定义的具有一些公共属性的抽象的元素集合, 是用于显示图形和制作用户界面的基本要素。
8.1.1 图形对象
MATLAB的图形对象包括图形窗口、坐标轴、用户界面、曲线、曲面、 文字、图像等。在MATLAB中,每一个具体的图形都是由若干个不同 的图形对象组成的。图形对象是有层次的,其层次结构如图8.1所示。 图形窗口是根对象的子对象,坐标轴和用户界面对象是图形窗口的子 对象,曲线、曲面、文字等是坐标轴的子对象。
8.1.3 图形对象属性 1.属性名与属性值 为方便属性的操作,MATLAB给每种对象的每一个属性规定了一个名字, 称为属性名,而属性名的取值称为属性值。例如,LineStyle是曲线对 象的一个属性名,它的值决定着线型,取值可以是'-' 、':'、'-.'、'--'或 'none'。在属性名的写法中,不区分字母的大小写,而且在不引起歧 义的前提下,属性名不必写全。例如,lines就代表LineStyle。此外, 属性名要用单撇号括起来。 2.属性的操作 (1)设置图形对象属性 用户可以通过set函数重新设置图形对象属性,其调用格式为 set(句柄,属性名1,属性值1,属性名2,属性值2,…) 其中“句柄”用于指明要操作的图形对象。如果在调用set函数时省略全 部属性名和属性值,则将显示出句柄所有的允许属性。 (2)获取图形对象属性 用户可通过get函数获取图形对象的属性值,其调用格式为 V=get(句柄,属性名) 其中V是返回的属性值。如果在调用get函数时省略属性名,则将返回句 柄所有的属性值。例如,以下命令用来获得上述曲线的颜色属性值: col=get(h,'Color');
【例8.2】在同一坐标下绘制红、绿两条不同的曲线,然后获取绿色曲线 的句柄,并利用句柄更改绿色曲线的样式。 程序如下: 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'); %对绿色线条进行设置
【例8.3】建立一个图形窗口。该图形窗口没有菜单条,标题名称为“我 的图形窗口”,该窗口位于屏幕的左下角,其宽度和高度分别为450 像素和250像素,且当用户从键盘按下任意一个键时,将在该图形窗 口绘制出正弦曲线。 命令如下: x=linspace(0,2*pi,60); y=sin(x); hf=figure('Position',[5,5,360,210],'MenuBar','none',… 'Name','我的图形窗口','NumberTitle','off', … 'KeyPressFcn', 'plot(x,y);axis([0,2*pi,-1,1]);');
表 8.1 函 gcf gca gco findobj 数 常用的获取图形对象句柄的函数 功 获取当前图形窗口的句柄(get current figure) 获取当前坐标轴的句柄(get current axis) 获取最近被选中的图形对象的句柄(get current object) 按照指定的属性来获取图形对象的句柄 能
第8章 图形句柄
MATLAB的图形是由不同图形对象(如坐标轴、曲线、曲面 或文字等)组成的。MATLAB系统给每个图形对象分配一 个标识符,称为句柄,以后可以通过该句柄获取或设置该 图形对象的属性 【本章学习目标】 ● 了解图形对象和图形句柄的基本概念。 ● 掌握图形对象属性的基本操作。 ● 掌握利用图形对象进行绘图操作的方法。
8.2 图形窗口对象与坐标轴
除根对象外,所有图形对象都可以由与之同名的低层函数创建。 8.2.1 图形窗口对象 创建图形窗口对象使用figure函数,其调用格式如下。 ● 句柄变量 = figure(属性名1,属性值1,属性名2,属性值2,…) ● figure(窗口句柄) 使用第1种格式时,按指定的属性来创建图形窗口。使用第2种格式时, 若句柄是已经存在的某图形窗口句柄,则使该图形窗口成为当前图形 窗口,并在此输出;若句柄是不存在的图形窗口句柄,则使用该句柄 创建一个新的图形窗口后,在新的图形窗口输出。figure函数不带参 数时,按MATLAB默认的属性值创建图形窗口。 要关闭图形窗口,使用close函数,其调用格式为 close(窗口句柄) 另外,close all命令可以关闭所有的图形窗口,clf命令则是清除当前图形 窗口的内容,但不关闭窗口。
3.对象的公共属性 图形对象具有各种各样的属性,有些属性是所有对象共同具备的,有些 属性则是各对象所特有的。这里先介绍对象常用的公共属性。 (1)Children属性。该属性的取值是该对象所有子对象的句柄组成的一 个向量。 (2)Color属性。该属性的取值是一个颜色值,既可以用字符表示,也 可以用RGB三元组表示。 (3)Parent属性。该属性的取值是该对象的父对象的句柄。 (4)Tag属性。该属性的取值是一个字符串,它相当于给该对象定义了 一个标签。定义了Tag属性后,在任何程序中都可以通过findobj函数 获取该标签所对应图形对象的句柄。例如,hf = findobj(0, 'Tag','Flag1')将在屏幕对象及其子对象中寻找Tag属性为Flag1的对象, 并返回句柄。 (5)Type属性。表示该对象的类型,该属性的值是只读的。 (6)UserData属性。该属性的取值是一个矩阵,默认值为空矩阵。在 程序设计中,可以将一个与图形对象有关的比较重要的数据存储在这 个属性中,借此可以达到传递数据的目的。具体做法是,先用set函 数给某一句柄添加一些附加数据(一个矩阵),如果想使用这样的矩 阵,再用get函数调用出来。 (7)Visible属性。该属性的取值是on(默认值)或off,决定着图形对 象是否在图形窗口中显示出来。
图形窗口常用属性
(1)MenuBar/ToolBar属性。属性的取值可以是figure(默认值)或none,用来 控制图形窗口是否具有菜单条/工具栏。 (2)NumberTitle属性。该属性的取值是on(默认值)或off,决定在图形窗口 的标题中是否以“Figure No.n:”为标题前缀,这里n是图形窗口的序号,即句 柄值。 (3)Resize属性。该属性的取值是on(默认值)或off。决定着在图形窗口建立 后可否用鼠标改变该窗口的大小。 (4)Pointer属性。该属性的可取值是arrow(默认值)、crosshair、ibeam、 watch、topl、topr、botl、botr、circle、cross、fleur、custom等,分别对应 于15种典型的鼠标指针形式。 (5)Position属性。该属性的取值是一个由4个元素构成的向量,其形式为 [n1,n2,n3,n4]。这个向量定义了图形窗口在屏幕上的位置和大小,其中n1和 n2分别为对象左下角的横纵坐标值,n3和n4分别为图形窗口的宽度和高度。 它们的单位由Units属性决定。 (6)Units属性。该属性的取值可以是下列字符串中的任何一种: normalized (相对单位,为默认值)、pixel(像素)、inches(英寸)、centimeters (厘米)和points(磅)。 (7)对键盘及鼠标响应属性。MATLAB允许对键盘和鼠标键按下这样的动作进 行响应,这类属性有KeyPressFcn(键盘键按下响应)、 WindowButtonDownFcn(鼠标键按下响应)、WindowButtonMotionFcn (鼠标移动响应)、WindowButtonUpFcn(鼠标键释放响应)等,这些属性 所对应的属性值可以为用MATLAB编写的函数名或命令名,表示一旦键盘键 或鼠标键按下之后,将自动调用给出的函数或命令。
8.2.2 坐标轴 坐标轴是在图形窗口中定义的一个画图区域。坐标轴对象是 图形窗口的子对象,在某个图形窗口中输出图形图像,实 质上是指在该图形窗口的当前坐标轴中输出图形图像。 建立坐标轴对象使用axes函数,其调用格式如下。 ● 句柄变量=axes(属性名1,属性值1,属性名2,属性值2,…) ● axes 或 句柄变量=axes 调用axes函数用指定的属性在当前图形窗口创建坐标轴,并 将其句柄赋给左边的句柄变量。函数不带参数表示按 MATLAB默认的属性值在当前图形窗口创建坐标轴。 用axes 函数建立坐标轴之后,还可以调用axes 函数将其设 定为当前坐标轴,且坐标轴所在的图形窗口自动成为当前 图形窗口,调用格式为 axes(坐标轴句柄)
【例8.1】绘制曲线并查看有关对象的句柄。 命令如下: x=linspace(0,2*pi,30); y=sin(x); h0=plot(x,y,'rx') %曲线对象的句柄 h0 = 171.0016 h1=gcf %图形窗口句柄 h1 = 1 h2=gca %坐标轴句柄 h2 = 170.0017 h3=findobj(gca,'Marker','x') %坐标轴上曲线的句柄 h3 = 171.0016 图形对象的句柄由系统自动分配,每次分配的值不一定相同。在获取对 象的句柄后,可以通过句柄来设置或获取对象的属性。
根
轴 注解对象
核心对象
绘图对象