防止对图窗和坐标区访问
为什么防止访问
某些情况下,防止特定图窗或坐标区成为图形输出的目标非常重要。也就是防止其成为 gcf
返回的当前图窗,或 gca
返回的当前坐标区。
您可能想要防止访问包含实现用户界面的控件的图窗。或者您想要防止访问作为应用程序一部分且只能被应用程序访问的坐标区。
如何防止访问
通过将特定图窗或坐标区从 MATLAB® 函数的可见句柄列表中移除,以防止该函数访问这些图窗或坐标区。
有两个属性用于设置控制柄的可见性:HandleVisibility
和 ShowHiddenHandles
HandleVisibility
是所有图形对象的属性。它控制对象句柄的可见性,有三个可能值:
受句柄可见性影响的属性
当对象的 HandleVisibility
设置为 'callback'
或 'off'
时:
对象句柄不会出现在其父对象的
Children
属性中。图窗不会出现在根对象的
CurrentFigure
属性中。坐标区不会出现在包含图窗的
CurrentAxes
属性中。图形对象不会出现在图窗的
CurrentObject
属性中。
受句柄可见性影响的函数
当句柄在其父对象的子对象列表中不可见时,通过搜索对象层次结构获取句柄的函数无法返回该句柄。这些函数包括 get
、findobj
、gca
、gcf
、gco
、newplot
、cla
、clf
和 close
。
gca 和 gcf 返回值
如果隐藏句柄的图窗位于屏幕最顶层,而可见句柄的图窗叠放在其后,那么 gcf
会在堆栈中返回最顶层图窗。同样的行为也适用于 gca
。如果不存在可见句柄的图窗,那么调用 gcf
或 gca
创建一个。
访问隐藏句柄对象
根 ShowHiddenHandles
属性启用或禁用句柄可见性控制。默认情况下,ShowHiddenHandles
为'off'
,这意味着 MATLAB 遵循每个对象 HandleVisibility
属性设置。
将 ShowHiddenHandles
设置为 on
等效于将图形层次结构中所有对象的 HandleVisibility
属性设置为 on
。
close
函数还允许使用 hidden
选项访问隐藏句柄的图窗。例如:
close('hidden')
关闭屏幕上最顶层图窗,即使其句柄是隐藏的。
合并 all
和 hidden
选项:
close('all','hidden')
关闭所有图窗。
句柄有效性与句柄可见性
无论句柄的 HandleVisibility
属性的状态如何,所有句柄都保持有效。如果您已将一个对象句柄分配给一个变量,那么您可以使用该句柄变量设置或获取其属性。