Main Content

特殊对象标识符

获取特殊对象的句柄

MATLAB® 提供了返回重要对象句柄的函数,从而您可以根据需要随时获取它们。

这些对象包括:

  • 当前图窗 - 图形命令当前目标的图窗句柄。

  • 当前坐标区 - 作为图形命令目标的当前图窗中的坐标区句柄。

  • 当前对象 - 选中对象的句柄

  • 回调对象 - 其回调正在执行的对象句柄。

  • 回调图窗 - 回调对象的父级图窗的句柄。

当前图窗、坐标区和对象

MATLAB 图形中一个重要概念是当前对象。成为当前对象意味着该对象成为所有会影响该类型对象的操作的目标。有三个对象可在任意时刻指定为当前对象:

  • 当前图窗是指定接收图形输出的窗口。

  • 当前坐标区是绘图函数显示图形的坐标区。

  • 当前对象是最新创建或选中的对象。

MATLAB 将对应于这些对象的句柄存储在前代相应的属性中。

这些属性可以让您获得这些关键对象的句柄:

hRoot = groot;
hFigure = hRoot.CurrentFigure;
hAxes = hFigure.CurrentAxes;
hobj = hFigure.CurrentObject;

便利函数

以下命令是这些属性查询的简写表示。

  • gcf - 返回根 CurrentFigure 属性值;如果没有当前图窗,则创建一个图窗。HandleVisibility 属性设置为 off 的图窗不能成为当前图窗。

  • gca - 返回当前图窗的 CurrentAxes 属性值,如果没有当前图窗,则创建一个坐标区。HandleVisibility 属性设置为 off 的坐标区不能成为当前坐标区。

  • gco - 返回当前图窗的 CurrentObject 属性值。

使用这些命令作为需要对象句柄的函数的输入参量。例如,可以点击线条对象然后使用 gco 将句柄指定给 set 命令,

set(gco,'Marker','square')

或点击坐标区对象以设置坐标区属性:

set(gca,'Color','black')

您可以获得当前坐标区中所有图形对象的句柄(隐藏的句柄除外):

h = get(gca,'Children');

然后确定对象的类型:

get(h,'Type')
ans = 
      'text'
      'patch'
      'surface'
      'line'

尽管 gcfgca 提供了简单的方法获取当前图窗和坐标区句柄,它们在代码文件中的用处不大。如果您的代码是 MATLAB 上层应用程序的一部分,您不知道其中哪些用户操作会更改这些值,则上述方法尤其有用。

有关如何防止用户访问您想要保护的图形对象句柄的详细信息,请参阅防止对图窗和坐标区访问

回调对象和回调图窗

回调函数经常需要有关定义回调的对象或包含其回调正在执行的图窗的信息。要获得这些对象,请使用以下便利函数:

  • gcbo - 返回根 CallbackObject 属性值。该属性包含其回调正在执行的对象句柄。gcbo 还可以返回包含回调对象的图窗句柄。

  • gcbf - 返回包含回调对象的图窗句柄。

MATLAB 保持 CallbackObject 属性值与当前执行的回调同步。如果有回调中断正在执行的回调,MATLAB 会更新 CallbackObject 属性值。

在编写 CreateFcnDeleteFcn 回调函数时,一定要使用 gcbo 引用回调对象。

有关编写回调函数的详细信息,请参阅Create Callbacks for Graphics Objects