In some situations it is important to prevent particular figures
or axes from becoming the target for graphics output. That is, prevent
them from becoming the current figure, as returned by gcf
, or the current axes, as returned
by gca
.
You might want to prevent access to a figure containing the controls that implement a user interface. Or, you might want to prevent access to an axes that is part of an application program accessed only by the application.
Prevent MATLAB® functions from targeting a particular figure or axes by removing their handles from the list of visible handles.
Two properties control handle visibility: HandleVisibility
and ShowHiddenHandles
HandleVisibility
is a property of all graphics
objects. It controls the visibility of the object’s handle
to three possible values:
on
— You can obtain the
object's handle with functions that return handles, such as (gcf
, gca
, gco
, get
,
and findobj
). This is the default
behavior.
callback
— The object's
handle is visible only within the workspace of a callback function.
off
— The handle is hidden
from all functions executing in the command window and in callback
functions.
When an object’s HandleVisibility
is
set to callback
or off
:
The object's handle does not appear in its parent's Children
property.
Figures do not appear in the root's CurrentFigure
property.
Axes do not appear in the containing figure's CurrentAxes
property.
Graphics objects do not appear in the figure's CurrentObject
property.
When a handle is not visible in its parent's list of children,
functions that obtain handles by searching the object hierarchy cannot
return the handle. These functions include get
, findobj
, gca
, gcf
, gco
, newplot
, cla
, clf
, and close
.
When a hidden-handle figure is topmost on the screen, but has
visible-handle figures stacked behind it, gcf
returns
the topmost visible-handle figure in the stack. The same behavior
is true for gca
. If no visible-handle
figures or axes exist, calling gcf
or gca
creates
one.
The root ShowHiddenHandles
property enables and
disables handle visibility control. By default, ShowHiddenHandles
is off
,
which means MATLAB follows the setting of every object’s HandleVisibility
property.
Setting ShowHiddenHandles
to on
is
equivalent to setting the HandleVisibility
property
of all objects in the graphics hierarchy to on
.
Note
Axes title and axis label text objects are not children of the axes. To access
the handles of these objects, use the axes Title
, XLabel
, YLabel
, and ZLabel
properties.
The close
function also
allows access to hidden-handle figures using the hidden
option.
For example:
close('hidden')
closes the topmost figure on the screen, even if its handle is hidden.
Combining all
and hidden
options:
close('all','hidden')
closes all figures.
All handles remain valid regardless of the state of their HandleVisibility
property.
If you have assigned an object handle to a variable, you can always
set and get its properties using that handle variable.