www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@mvgraph3d/copyobj.m

    function newobj=copyobj(obj,fig)
%COPYOBJ  Create a copy of an object in a new figure
%
%  NEWOBJ=COPYOBJ(OBJ,FIG) creates a replica of the object OBJ in the
%  figure FIG.

%  Copyright 2000-2010 The MathWorks, Inc. and Ford Global Technologies, Inc.


% Copy data structure
newobj=obj;

% Create a new uipanel
newobj.panel = uipanel('Parent', fig, ...
    'Units', 'pixels', ...
    'Position', get(obj.panel, 'Position'), ...
    'Visible', get(obj.panel, 'Visible'), ...
    'BorderType', 'line', ...
    'HighlightColor', get(obj.panel, 'HighlightColor'), ...
    'BackgroundColor', get(obj.panel, 'BackgroundColor'), ...
    'HitTest', 'off');

% Copy graphics objects
newobj.axes=copyobj(obj.axes,newobj.panel);
newobj.colorbar.axes=copyobj(obj.colorbar.axes,newobj.panel);
newobj.xtext=copyobj(obj.xtext,newobj.panel);
newobj.xfactor=copyobj(obj.xfactor,newobj.panel);
newobj.ytext=copyobj(obj.ytext,newobj.panel);
newobj.yfactor=copyobj(obj.yfactor,newobj.panel);
newobj.ztext=copyobj(obj.ztext,newobj.panel);
newobj.zfactor=copyobj(obj.zfactor,newobj.panel);
newobj.badim = mbcgui.widget.Image('Parent', newobj.panel, ...
    'ImageFile',pr_badim,...
    'Position',get(obj.badim, 'Position'),...
    'Visible',get(obj.badim, 'Visible'));

% find new axes child objects
ch = get(newobj.axes,'Children');
newobj.surf = findobj(ch, 'Type', 'patch');
datatags = findobj(ch, 'Type', 'text');
newobj.colorbar.bar=get(newobj.colorbar.axes,'Children');

newobj.DataPointer = xregGui.RunTimePointer(obj.DataPointer.info);
newobj.DataPointer.LinkToObject(newobj.panel);
newobj.DataPointer.info.datataghandles = datatags;

% save an object handle in the patch for later use.
cb=get(obj.xfactor,'Callback');
set([newobj.xfactor;newobj.yfactor;newobj.zfactor],'Callback',[cb(1) {newobj}]);
cb=get(obj.colorbar.bar,'ButtonDownFcn');
set(newobj.colorbar.bar,'ButtonDownFcn',[cb(1) {newobj}]);

% turn on rotation on new axes
if strcmpi(get(newobj.axes, 'Visible'), 'on')
    mv_rotate3d(newobj.axes,'ON');
end