15.3.1 图形结构体简介

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

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

此外,还有几个函数对图形对象的属性进行操作,这些函数也返回句柄。这包括但不限于以下函数:plotplot3 返回指向类型为 line 的对象的句柄。函数 subplot 返回指向类型为 axes 的对象的句柄。函数 fillfill3trimeshtrisurf 返回指向类型为 patch 的对象的句柄。函数 scatter3 返回指向类型为 scatter 的对象的句柄。函数 slicesurfsurflmeshmeshzpcolorwaterfall 每个都返回类型为 surface 的句柄。函数 camlight 返回指向类型为 light 的对象的句柄。函数 areabarbarhcontourcontourfcontour3surfcmeshcerrorbarquiverquiver3stairstemstem3 每个都返回一个指向复杂数据结构的句柄,如 Data Sources 中所述。

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

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

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

3. figure 对象之下是 axeshggroup 对象。

4. axeshggroup 对象之下是 linetextpatchscattersurfaceimagelight 对象。

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

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

getset 命令用于获取和设置图形对象的属性值。此外,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} ]
        ...

getset 的用法在 getset 中进一步解释。

 
res = isprop (obj, "prop")

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

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

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

参见: getsetpropertiesismethodisobject


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

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