Main Content

Copiar objetos

Copia de objetos con copyobj

Copie objetos de un elemento principal a otro con la función copyobj. La copia difiere del original:

  • La propiedad Parent es ahora el nuevo elemento principal.

  • El identificador del objeto copiado es diferente del original.

  • copyobj no copia las propiedades de callback del objeto original.

  • copyobj no copia los datos de ninguna aplicación asociados al objeto original.

Por tanto == y isequal devuelven el valor “false” al comparar el identificador original y el nuevo.

Puede copiar varios objetos en un nuevo elemento principal o un objeto en varios elementos principales nuevos, siempre y cuando el resultado mantenga la relación elemento principal-elemento secundario correcta. Cuando copie un objeto con objetos de elementos secundarios, MATLAB® copia también todos los elementos secundarios.

Nota

No puede copiar el mismo objeto más de una vez en el mismo elemento principal en una única llamada a copyobj.

Copiar un único objeto en varios destinos

Al copiar un único objeto en varios destinos, los nuevos identificadores devueltos por copyobj se encuentran en el mismo orden que los identificadores del elemento principal.

h = copyobj(cobj,[newParent1,newParent2,newParent3])

El arreglo h devuelto contiene los nuevos identificadores de objeto en el orden que se muestra:

   h(1) -> newParent1
   h(2) -> newParent2
   h(3) -> newParent3

Copia de varios objetos

Este ejemplo muestra cómo copiar varios objetos en un único elemento principal.

Suponga que crea un conjunto de gráficas similares y que desea etiquetar el mismo punto de datos en cada gráfica. Puede copiar los objetos de marcador y texto utilizados para etiquetar el punto en la primera gráfica en cada gráfica posterior.

Cree y etiquete la primera gráfica:

x = 0:.1:2*pi;
plot(x,sin(x))
hText = text('String','\{5\pi\div4, sin(5\pi\div4)\}\rightarrow',...
   'Position',[5*pi/4,sin(5*pi/4),0],...
   'HorizontalAlignment','right');
hMarker = line(5*pi/4,sin(5*pi/4),0,'Marker','*');

Cree dos gráficas más sin etiquetas:

figure
x = pi/4:.1:9*pi/4;
plot(x,sin(x))
hAxes1 = gca;
figure
x = pi/2:.1:5*pi/2;
plot(x,sin(x))
hAxes2 = gca;

Copie el texto y el marcador (hText y hMarker) en cada gráfica asignándolos a los ejes correspondientes. Devuelva los nuevos identificadores para las copias de texto y marcador:

newHandles1 = copyobj([hText,hMarker],hAxes1);
newHandles2 = copyobj([hText,hMarker],hAxes2);

Debido a que el objetivo es copiar ambos objetos en cada eje, llame a copyobj dos veces, cada una de las veces con un eje con un único destino.

Copiar varios objetos en varios destinos

Cuando llame a copyobj con varios objetos que copiar y varios destinos de elementos principales, copyobj copia los objetos correspondientes en los elementos principales correspondientes. Es decir, si h y p son arreglos de identificador de longitud n, esta llamada a copyobj:

copyobj(h,p)

da como resultado una copia de elemento por elemento:

h(1) -> p(1);
h(2) -> p(2);
...
h(n) -> p(n);