copyobj

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

Синтаксис

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

Описание

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

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

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

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

Что не скопировано

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

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

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

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

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

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

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

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

  • The 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