Копирование графических объектов и их потомков
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
неоднократно, что приводит к появлению ряда сообщений об ошибке после превышения предела рекурсии.