www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@mbcmultiview/@MultiViewPanel/printToFigure.m

    function H = printToFigure(obj)
%PRINTTOFIGURE Create a copy of the current view in a new figure.
%
%  PRINTTOFIGURE(OBJ) creates a new figure that contains a copy of the
%  current view.  The handle to the new figure is returned.

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


hVC = obj.getSelectedViewContainer;
if ~isempty(hVC)
    PR = xregGui.PointerRepository;
    PtrID = PR.stackSetPointer(obj.Parent, 'watch');
    MsgID = obj.pAddStatusMessage('Printing current view to a new figure...');
    
    hV = hVC.View;
    P = ancestor(obj.Parent, 'figure');

    H = figure('Color', 'w', ...
        'Visible', 'off', ...
        'Renderer', get(P, 'Renderer'), ...
        'Name', sprintf('%s - %s', hV.gettitle, obj.MessageService.getDataName), ...
        'NumberTitle', 'off');

    if hV.canPrint
        L = hV.printcopy(H);
    else
        hNewView = obj.ViewList.createView(obj.getSelectedViewTypeIndex, ...
            obj.MessageService.copy, ...
            'Parent', H);
        L = mbcmultiview.PanelViewContainer('Parent', H, ...
            'View', hNewView);
    end
    figpos = get(H, 'Position');
    set(L, 'Position', [1 1 figpos(3:4)]);

    List = mbcgui.hgclassesutil.listener(H, 'SizeChanged',  mbcutils.callback(@i_resizefig, H, L));
    set(H, 'Visible', 'on', 'UserData', List);
    
    obj.pRemoveStatusMessage(MsgID);
    PR.stackRemovePointer(obj.Parent, PtrID); 
end

function i_resizefig(src, evt, H, L)
figpos = get(H, 'Position');
set(L, 'Position', [1 1 figpos(3:4)]);