www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@mvgraph2d/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 panel 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, ... 'Visible', get(obj.badim, 'Visible'), ... 'Position', get(obj.badim, 'Position'), ... 'ImageFile', pr_badim); 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.line=findobj(newobj.axes,'Type','line'); newobj.image=findobj(newobj.axes,'Type','image'); datatags = findobj(newobj.axes, 'Type', 'text', 'Tag', 'graph2d_data_tag'); newobj.colorbar.bar=get(newobj.colorbar.axes,'Children'); % create new layout structure for uicontrols newobj.controls = xreggridbaglayout(newobj.panel, ... 'packgroup','XX_MVGRAPH2D', ... 'dimension',[5,7],... 'rowsizes',[-1 4 15 1 -1], ... 'colsizes',[-1 70 -1 -1 70 -1 -1], ... 'colratios',[1 1 3 2 1 3 1],... 'mergeblock',{[2 4],[3 3]}, ... 'mergeblock',{[2 4], [6 6]},... 'elements',{[],[],[],[],[],[],[];... [],[],newobj.xfactor,[],[],newobj.yfactor,[];... [],newobj.xtext,[],[],newobj.ytext,[],[];... [],[],[],[],[],[],[];... [],[],[],[],[],[],[]},... 'position',get(obj.controls,'Position'),... 'packstatus','on'); % copy data 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],'Callback',{cb{1}, newobj}); cb = get(obj.image, 'ButtonDownFcn'); set(newobj.image,'ButtonDownFcn',{cb{1}, newobj}); cb = get(obj.colorbar.bar, 'ButtonDownFcn'); set(newobj.colorbar.bar,'ButtonDownFcn',{cb{1}, newobj});