15.3.1 图形结构体简介

图形函数使用类为 graphics_handle 的指针来寻址控制视觉显示的数据结构。一个 graphics 句柄可以指向许多不同的基本对象类型中的任何一个。这些对象本身就是图形数据结构。基本图形对象类型包括:figure、axes、line、text、patch、scatter、surface、image 和 light。

这些对象中的每一个都有一个同名的函数,并且每个函数都返回一个指向相应类型对象的图形句柄。

此外,还有几个函数对图形对象的属性进行操作,这些函数也返回句柄。这包括但不限于以下函数:plot 和 plot3 返回指向类型为 line 的对象的句柄。函数 subplot 返回指向类型为 axes 的对象的句柄。函数 fill、fill3、trimesh 和 trisurf 返回指向类型为 patch 的对象的句柄。函数 scatter3 返回指向类型为 scatter 的对象的句柄。函数 slice、surf、surfl、mesh、meshz、pcolor 和 waterfall 每个都返回类型为 surface 的句柄。函数 camlight 返回指向类型为 light 的对象的句柄。函数 area、bar、barh、contour、contourf、contour3、surfc、meshc、errorbar、quiver、quiver3、stair、stem 和 stem3 每个都返回一个指向复杂数据结构的句柄,如 Data Sources 中所述。

图形对象按层次结构排列:

1. 根对象由 groot 返回(历史上相当于句柄 0)。换句话说,get (groot) 返回根对象的属性。

2. 根对象之下是 figure 对象。

3. figure 对象之下是 axes 或 hggroup 对象。

4. axes 或 hggroup 对象之下是 line、text、patch、scatter、surface、image 和 light 对象。

可以通过查询图形对象的 "parent" 和 "children" 属性来遍历这个层次结构树。

可以通过函数 ishghandle 将图形句柄与函数句柄区分开来(参见 函数句柄)。如果其参数是图形对象的句柄,则 ishghandle 返回 true。此外,可以使用 isfigure 或 isaxes 分别测试 figure 或 axes 对象。要测试特定类型的图形句柄,例如 patch 或 line 对象,请使用 isgraphics。更具体的测试函数只有当参数既是图形句柄又是正确类型(figure、axes、指定的对象类型)时才返回 true。

get 和 set 命令用于获取和设置图形对象的属性值。此外,get 命令也可用于获取属性名称。

例如,可以通过以下方式显示由图形句柄 h 指向的图形对象的 "type" 属性:

get (h, "type")

可以使用 s = get (h) 以结构体的形式获取属性及其当前值,其中 h 是图形对象的句柄。如果只需要属性的名称和允许的值(仅适用于单选属性),可以使用 set (h)。

例如:

h = figure ();
get (h, "type")
⇒  ans = figure
set (h)
⇒
        alphamap:
        beingdeleted:  [ {off} | on ]
        busyaction:  [ cancel | {queue} ]
        buttondownfcn:
        clipping:  [ off | {on} ]
        closerequestfcn:
        color:
        colormap:
        createfcn:
        currentaxes:
        deletefcn:
        dockcontrols:  [ {off} | on ]
        filename:
        graphicssmoothing:  [ off | {on} ]
        handlevisibility:  [ callback | off | {on} ]
        ...

get 和 set 的用法在 get 和 set 中进一步解释。

 
res = isprop (obj, "prop")

如果 prop 是对象 obj 的属性,则返回 true。

obj 也可以是对象数组,在这种情况下 res 将是一个逻辑数组,指示每个句柄是否具有属性 prop。

对于绘图,obj 是图形对象的句柄。否则,obj 应该是类的实例。isprop 报告类是否定义了属性,但 Access 权限或可见性限制(Hidden = true)可能会阻止程序员使用。

参见: get、set、properties、ismethod、isobject。


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-4