Main Content

Identificadores de objetos especiales

Obtener identificadores de objetos especiales

MATLAB® ofrece funciones que devuelven identificadores de objetos relevantes, de modo que puede obtener dichos identificadores siempre que los requiera.

Estos objetos incluyen:

  • Figura actual: identificador de la figura que es el destino actual de los comandos de gráficas.

  • Ejes actuales: identificador de los ejes de la figura actual que es el destino de los comandos de gráficas.

  • Objeto actual: identificador del objeto que está seleccionado.

  • Objeto de callback: identificador del objeto cuyo callback se está ejecutando.

  • Figura de callback: identificador de la figura principal del objeto de callback.

El objeto, los ejes y la figura actuales

Un importante concepto en las gráficas de MATLAB consiste en ser el objeto actual. Ser el objeto actual supone que dicho objeto es el destino de cualquier acción que afecta a los objetos de ese tipo. Hay tres objetos designados como actuales en todo momento:

  • La figura actual es la ventana designada para recibir la salida de las gráficas.

  • Los ejes actuales son los ejes en los que las funciones de representación gráfica muestran las gráficas.

  • El objeto actual es el objeto que se ha creado o seleccionado por última vez.

MATLAB almacena los tres identificadores correspondientes a dichos objetos en la propiedad correspondiente del antecesor.

Dichas propiedades le permiten obtener los identificadores de estos objetos principales:

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

Funciones de conveniencia

Los siguientes comandos son notaciones abreviadas para las consultas de propiedades.

  • gcf: devuelve el valor de la propiedad raíz CurrentFigure o crea una figura si no hay ninguna figura actual. Una figura con la propiedad HandleVisibility configurada en off no se puede convertir en la figura actual.

  • gca: devuelve el valor de la propiedad CurrentAxes de la figura actual o crea los ejes si no hay ningún eje actual. Los ejes con la propiedad HandleVisibility configurada en off no se pueden convertir en los ejes actuales.

  • gco: devuelve el valor de la propiedad CurrentObject de la figura actual.

Utilice estos comandos como argumentos de entrada para las funciones que requieren identificadores de objeto. Por ejemplo, puede hacer clic en un objeto de línea y, a continuación, utilizar gco para especificar el identificador para el comando set,

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

o hacer clic en un objeto de ejes para configurar una propiedad de ejes:

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

Puede obtener los identificadores de todos los objetos de gráficas de los ejes actuales (excepto los identificadores ocultos):

h = get(gca,'Children');

y, a continuación, determinar los tipos de los objetos:

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

Aunque gcf y gca ofrecen un medio sencillo para obtener los identificadores de los ejes y la figura actuales, son menos útiles en los archivos de código. Especialmente si el código forma parte de una aplicación dividida en capas en MATLAB, donde no conoce las acciones del usuario que pueden cambiar estos valores.

Para obtener información sobre cómo evitar que los usuarios accedan a los identificadores de los objetos de gráficas que desea proteger, consulte Evitar el acceso a figuras y ejes.

Objeto de callback y figura de callback

Las funciones de callback suelen requerir información sobre el objeto que define el callback o la figura que contiene los objetos cuyo callback se está ejecutando. Para obtener estos objetos, utilice estas funciones de conveniencia:

  • gcbo: devuelve el valor de la propiedad raíz CallbackObject. Esta propiedad contiene el identificador del objeto cuyo callback se está ejecutando. De forma opcional, gcbo devuelve el identificador de la figura que contiene el objeto de callback.

  • gcbf: devuelve el identificador de la figura que contiene el objeto de callback.

MATLAB mantiene el valor de la propiedad CallbackObject sincronizado con el callback que se está ejecutando. Si un callback interrumpe la ejecución de otro callback, MATLAB actualiza el valor de la propiedad CallbackObject.

Al escribir funciones de callback para CreateFcn y DeleteFcn, utilice siempre gcbo para referirse al objeto de callback.

Para obtener información sobre la escritura de funciones de callback, consulte Create Callbacks for Graphics Objects