exponenta event banner

copyobj

Копирование графических объектов и их потомков

Синтаксис

new_handle = copyobj(h,p)
copyobj(___,'legacy')

Описание

copyobj создает копии графических объектов и назначает объекты новому родительскому объекту.

Новый родитель должен соответствовать скопированному объекту (например, можно скопировать оси только в фигуру или uipanel). copyobj копирует и детей.

new_handle = copyobj(h,p) копирует один или несколько графических объектов, идентифицированных h и возвращает дескриптор нового объекта или массив новых объектов. Новые графические объекты являются дочерними по отношению к графическим объектам, указанным в p.

copyobj(___,'legacy') копирует свойства обратного вызова объекта и данные приложения объекта. Такое поведение согласуется с версиями copyobj до R2014b выпуска MATLAB ®.

Что не копируется

copyobj не копирует свойства или объекты, зависящие от исходного контекста, для правильной работы. Объекты с контекстными меню по умолчанию (например, легенды и колорбары) создают новые контекстные меню для нового объекта. Фигуры создают новые панели инструментов и меню для новой фигуры.

copyobj не копирует:

  • Свойства обратного вызова (за исключением использования legacy опция).

  • Данные приложения, связанные с объектом (за исключением использования legacy опция).

  • Контекстное меню легенд, колонок или других объектов, определяющих контекстные меню по умолчанию.

  • Панель инструментов и меню фигуры по умолчанию.

  • Осевые объекты, используемые с yyaxis функция.

  • Interactions свойства объекта axes.

  • DataTipTemplate для объектов, имеющих это свойство, например Line, Scatter, и Surface объекты.

  • Нельзя копировать один и тот же объект несколько раз в один и тот же родительский объект в одном вызове copyobj.

MATLAB изменяет Parent новому родительскому объекту и назначает новым объектам новый дескриптор.

Примеры

Скопируйте поверхность в новую ось, расположенную на другом рисунке.

h = surf(peaks);
colormap hsv

Создайте целевую фигуру и оси:

fig = figure;
ax = axes;

Скопируйте поверхность в новые оси и задайте свойства, которые не являются свойствами поверхности:

new_handle = copyobj(h,ax);
colormap(fig,hsv)
view(ax,3)
grid(ax,'on')

Обратите внимание, что при копировании поверхности colormap, view, и grid не копируются.

Совет

h и p могут быть скалярами или векторами. Когда оба вектора являются векторами, они должны иметь одинаковую длину и выходной аргумент, new_handle, - вектор одинаковой длины. В этом случае new_handle(i) является копией h(i) с его Parent свойство имеет значение p(i).

Когда h является скаляром и p является вектором, h копируется один раз в каждый из родителей в p. Каждый new_handle(i) является копией h с его Parent свойство имеет значение p(i), и length(new_handle) равняется length(p).

Когда h является вектором и p является скаляром, каждый new_handle(i) является копией h(i) с его Parent свойство имеет значение p. Длина new_handle равняется length(h).

Примечание

При копировании легенды или панели цветов необходимо скопировать связанные оси.

При программировании пользовательского интерфейса не звоните copyobj или textwrap (который звонит copyobj) внутри CreateFcn. Действие копирования объекта uicontrol приводит к запуску CreateFcn многократно, что вызывает ряд сообщений об ошибках после превышения предела рекурсии.

См. также

| | | | |

Представлен до R2006a