www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@mvgraph4d/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.badim = mbcgui.widget.Image('Parent', newobj.panel, ... 'ImageFile',pr_badim,... 'Position',get(obj.badim, 'Position'),... 'Visible',get(obj.badim, 'Visible')); newobj.axes=copyobj(obj.axes,newobj.panel); newobj.colorbar.axes=copyobj(obj.colorbar.axes,newobj.panel); newobj.colorbar.frame1=copyobj(obj.colorbar.frame1,newobj.panel); newobj.colorbar.frame2=copyobj(obj.colorbar.frame2,newobj.panel); newobj.colorbar.userange=copyobj(obj.colorbar.userange,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.ctext=copyobj(obj.ctext,newobj.panel); newobj.cfactor=copyobj(obj.cfactor,newobj.panel); % find new surf and patch objects ch = get(newobj.axes,'Children'); newobj.surf = findobj(ch,'flat','Type','patch'); datatags = findobj(ch, 'flat', 'Type', 'text'); ch=get(newobj.colorbar.axes,'Children'); newobj.colorbar.bar=findobj(ch,'flat','Tag','cbar'); newobj.colorbar.minrange=findobj(ch,'flat','Tag','minbar'); newobj.colorbar.midrange=findobj(ch,'flat','Tag','midbar'); newobj.colorbar.maxrange=findobj(ch,'flat','Tag','maxbar'); newobj.DataPointer = xregGui.RunTimePointer(obj.DataPointer.info); newobj.DataPointer.LinkToObject(newobj.panel); newobj.DataPointer.info.datataghandles = datatags; cb=get(obj.xfactor,'Callback'); set([newobj.xfactor;newobj.yfactor;newobj.zfactor;newobj.cfactor],... 'Callback',[cb(1), {newobj}]); cb=get(obj.colorbar.bar,'ButtonDownFcn'); set(newobj.colorbar.bar,'ButtonDownFcn',[cb(1),{newobj}]); cb=get(obj.colorbar.userange,'Callback'); set(newobj.colorbar.userange,'Callback',[cb(1),{newobj}]); cb=get(obj.colorbar.minrange,'ButtonDownFcn'); set([newobj.colorbar.minrange;newobj.colorbar.midrange;newobj.colorbar.maxrange],{'ButtonDownFcn'},... {[cb(1), {newobj,'min'}]; [cb(1), {newobj,'mid'}];[cb(1), {newobj,'max'}]}); % turn on rotation on new axes if strcmpi(get(newobj.axes, 'Visible'), 'on') mv_rotate3d(newobj.axes,'ON'); end