copyobj
复制图形对象及其后代
语法
new_handle = copyobj(h,p)
copyobj(___,'legacy')
说明
copyobj
创建图形对象的副本并将这些对象分配给新的父对象。
新父级必须适用于复制的对象(例如,只能将坐标区复制到图窗或 uipanel)。copyobj
还复制子级。
new_handle = copyobj(h,p)
复制 h
标识的一个或多个图形对象并返回新对象句柄或新对象数组。新图形对象是 p
指定的图形对象的子级。
copyobj(___,'legacy')
复制对象回调属性和对象应用程序数据。此行为与 R2014b 版的 MATLAB® 之前的 copyobj
一致。
不复制的内容
copyobj
并不复制依赖其原始上下文才能正常操作的属性或对象。包含默认上下文菜单(如图例和颜色栏)的对象为新对象创建新上下文菜单。图窗为新图窗创建新工具栏和菜单。
copyobj
并不复制:
回调属性(使用
legacy
选项时例外)。与对象关联的应用程序数据(使用
legacy
选项时例外)。图例、颜色栏或定义默认上下文菜单的其他对象的上下文菜单。
默认图窗工具栏和菜单。
与
yyaxis
函数结合使用的坐标区对象。坐标区对象的
Interactions
属性。对象的
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)
是其 Parent
属性设置为 p(i)
的 h
的副本,并且 length(new_handle)
等于 length(p)
。
如果 h
是向量且 p
是标量,则每个 new_handle(i)
都是其 Parent
属性设置为 p
的 h(i)
的副本。new_handle
的长度等于 length(h)
。
注意
必须在复制图例或颜色栏时复制关联的坐标区。
进行 UI 编程时,请勿在 CreateFcn
内部调用 copyobj
或 textwrap
(该函数又将调用 copyobj
)。复制 uicontrol 对象的操作会重复触发 CreateFcn
,在超过递归限制性之后将会产生一系列错误消息。
版本历史记录
在 R2006a 之前推出