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});