⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmpage.m

📁 对于精通掌握matlab非常有用的资料
💻 M
字号:
function mmpage(arg)%MMPAGE GUI to Set Figure Paper Position.% MMPAGE allows the user to set the current figure% position on the printed page using a gui.% MMPAGE(Hf) places the figure having handle Hf.%% Editable text boxes: Left Bottom Width Height% sets the respective figure position on the page.% Pushbuttons:%  Set Default makes the current position default for future figures.%  Get Factory changes the figure position to factory values.%  L/R Center centers the figure Left to Right.%  U/D Center centers the figure Up to Down.%  WYSIWYG makes the Width and Height identical to the Figure Window.%  Get Default sets the figure position to the Default values.%  Revert restores the figure position to that when MMPAGE was called.%  Done closes the MMPAGE GUI.%% Usage: create figure, call MMPAGE, then print.% D.C. Hanselman, University of Maine, Orono, ME, 04469% 4/25/95% Copyright (c) 1996 by Prentice-Hall, Inc.global Hf_2p Hf_gui Ha_gui Hp_gui Hu_l Hu_b Hu_w Hu_hfigrgb=[.5 .5 1];  % background figure colorboxrgb=[.65 .65 1];  % fill box coloraxesrgb=[1 1 1];   % axes background colorxyrgb=[0 0 0];     % grid and label colorif nargin==0	arg=mmgcf;	if isempty(arg),error('No Figure to Place on Page.'),endendif length(arg)==1 & arg>0  % must be a Figure handle	Hf_2p=arg;	pu=get(Hf_2p,'PaperUnits');	if ~strcmp(pu,'inches')&~strcmp(pu,'centimeters')		set(Hf_2p,'PaperUnits','inches')		pu='inches';	end	if strcmp(pu,'inches'),		xyunits='inches'; TINC=1;	else  % centimeters		xyunits='cm';TINC=2;	end	ps=get(Hf_2p,'PaperSize');	pp=get(Hf_2p,'PaperPosition');	pp=[max(pp(1:2),.028*ps) min(pp(3:4),.96*ps)]; % limit size	set(Hf_2p,'PaperPosition',pp)		Hf_gui=figure(...  % create GUI figure		'BackingStore','on',...		'Color',figrgb,...		'Units','normalized',...		'Position',[0 .2 .75*ps./max(ps);],...		'NumberTitle','off',...		'Name','MMPAGE',...		'NextPlot','add',...		'Resize','off',...		'Userdata',pp);	Ha_gui=axes(...   % create axes showing paper size		'AspectRatio',[ps(1)./ps(2) 1],...		'Box','on',...		'Color',axesrgb,...		'Drawmode','fast',...		'NextPlot','add',...		'View',[0 90],...		'Units','normalized',...		'Position',[0 .25 .8 .7],...		'XColor',xyrgb,...		'YColor',xyrgb,...		'Xgrid','on',...		'Ygrid','on',...		'Xlim',[0 ps(1)],...		'Ylim',[0 ps(2)],...		'XLimMode','manual',...		'YLimMode','manual',...				'Xtick',0:TINC:ps(1),...		'Ytick',0:TINC:ps(2));	Ht_x=text(0,0,['Paper Width, ' xyunits],'Color',xyrgb);	Ht_y=text(0,0,['Paper Height, ' xyunits],'Color',xyrgb);	Ht_t=text(0,0,['Paper Type: ' get(Hf_2p,'Papertype')],'Color',xyrgb);		set(Ha_gui,'XLabel',Ht_x,'Ylabel',Ht_y,'Title',Ht_t)	xpg=[pp(1) pp(1)+pp(3) pp(1)+pp(3) pp(1)];	ypg=[pp(2) pp(2) pp(2)+pp(4) pp(2)+pp(4)];	Hp_gui=fill(xpg,ypg,boxrgb); % draw box showing figure placement		Hu_l=uicontrol(...  % left edit box		'Style','edit',...		'Units','normalized',...		'Position',[.01 .06 .18 .05],...		'String',sprintf('%.2f',pp(1)),...		'Callback','mmpage(-1)');	uicontrol(...		'Style','text',...		'BackGroundColor',figrgb,...		'Units','normalized',...		'Position',[.01 0 .18 .04],...		'HorizontalAlignment','left',...		'String','Left');	Hu_b=uicontrol(...  % bottom edit box		'Style','edit',...		'Units','normalized',...		'Position',[.21 .06 .18 .05],...		'String',sprintf('%.2f',pp(2)),...		'Callback','mmpage(-1)');	uicontrol(...		'Style','text',...		'BackGroundColor',figrgb,...		'Units','normalized',...		'Position',[.21 0 .18 .04],...		'HorizontalAlignment','left',...		'String','Bottom');	Hu_w=uicontrol(...  % width edit box		'Style','edit',...		'Units','normalized',...		'Position',[.41 .06 .18 .05],...		'String',sprintf('%.2f',pp(3)),...		'Callback','mmpage(-1)');	uicontrol(...		'Style','text',...		'BackGroundColor',figrgb,...		'Units','normalized',...		'Position',[.41 0 .18 .04],...		'HorizontalAlignment','left',...		'String','Width');	Hu_h=uicontrol(...  % height edit box		'Style','edit',...		'Units','normalized',...		'Position',[.61 .06 .18 .05],...		'String',sprintf('%.2f',pp(4)),...		'Callback','mmpage(-1)');	uicontrol(...		'Style','text',...		'BackGroundColor',figrgb,...		'Units','normalized',...		'Position',[.61 0 .18 .04],...		'HorizontalAlignment','left',...		'String','Height');	uicontrol(...  % DONE		'Style','pushbutton',...		'Units','normalized',...		'Position',[.81 0 .18 .05],...		'String','Done',...		'Callback','close' );	uicontrol(...  % REVERT -2		'Style','pushbutton',...		'Units','normalized',...		'Position',[.81 .06 .18 .05],...		'String','Revert',...		'Callback','mmpage(-2)');	uicontrol(...  % Get DEFAULT -3		'Style','pushbutton',...		'Units','normalized',...		'Position',[.81 .12 .18 .05],...		'String','Get Default',...		'Callback','mmpage(-3)');		uicontrol(...  % WYSIWYG -4		'Style','pushbutton',...		'Units','normalized',...		'Position',[.81 .18 .18 .05],...		'String','WYSIWYG',...		'Callback','mmpage(-4)');	uicontrol(...  % U/D Center -5		'Style','pushbutton',...		'Units','normalized',...		'Position',[.81 .24 .18 .05],...		'String','U/D Center',...		'Callback','mmpage(-5)');	uicontrol(...  % L/R Center -6		'Style','pushbutton',...		'Units','normalized',...		'Position',[.81 .30 .18 .05],...		'String','L/R Center',...		'Callback','mmpage(-6)');			uicontrol(...  % Set Default -7		'Style','pushbutton',...		'Units','normalized',...		'Position',[.81 .42 .18 .05],...		'String','Set Default',...		'Callback','mmpage(-7)');			uicontrol(...  % Factory -8		'Style','pushbutton',...		'Units','normalized',...		'Position',[.81 .36 .18 .05],...		'String','Get Factory',...		'Callback','mmpage(-8)');			set(Hf_gui,'Visible','on')	elseif length(arg)==4  % update gui display	pp=arg;	set(Hu_l,'String',sprintf('%.2f',pp(1)))	set(Hu_b,'String',sprintf('%.2f',pp(2)))	set(Hu_w,'String',sprintf('%.2f',pp(3)))	set(Hu_h,'String',sprintf('%.2f',pp(4)))		set(Hf_2p,'PaperPosition',pp)	xpg=[pp(1) pp(1)+pp(3) pp(1)+pp(3) pp(1)];	ypg=[pp(2) pp(2) pp(2)+pp(4) pp(2)+pp(4)];		set(Hp_gui,'Xdata',xpg,'Ydata',ypg)  % adjust figure patchelseif arg==-1  % User-edited data	mps=0.96*get(Hf_2p,'PaperSize');	pp=zeros(1,4);	% prioritize width over left and height over bottom	pp(3)=min(abs(eval(get(Hu_w,'String'))),mps(1));       % width	pp(4)=min(abs(eval(get(Hu_h,'String'))),mps(2));       % height	pp(1)=min(abs(eval(get(Hu_l,'String'))),mps(1)-pp(3)); % left	pp(2)=min(abs(eval(get(Hu_b,'String'))),mps(2)-pp(2)); % bottom	mmpage(pp)	elseif arg==-2  % Revert	pp_rev=get(Hf_gui,'Userdata');	mmpage(pp_rev)	elseif arg==-3  % Get Default	set(Hf_2p,'PaperPosition','default')	pp=get(Hf_2p,'PaperPosition');	mmpage(pp)elseif arg==-4  % WYSIWYG	f_units=get(Hf_2p,'Units');	set(Hf_2p,'Units',get(Hf_2p,'PaperUnits'))	fp=get(Hf_2p,'Position');	set(Hf_2p,'Units',f_units)	ps=get(Hf_2p,'PaperSize');	pp=zeros(1,4);	pp(3:4)=min(fp(3:4),0.96*ps);  % limit width and height to paper size	pp(1)=(ps(1)-pp(3))/2;         % left	pp(2)=(ps(2)-pp(4))/2;         % bottom	mmpage(pp)elseif arg==-5  % U/D Center	pp=get(Hf_2p,'PaperPosition');	ps=get(Hf_2p,'PaperSize');	pp(2)=(ps(2)-pp(4))/2;         % bottom	mmpage(pp)elseif arg==-6  % L/R Center		pp=get(Hf_2p,'PaperPosition');	ps=get(Hf_2p,'PaperSize');	pp(1)=(ps(1)-pp(3))/2;         % left	mmpage(pp)elseif arg==-7  % Set Default	pp=get(Hf_2p,'PaperPosition');	set(0,'DefaultFigurePaperPosition',pp)elseif arg==-8  % Factory	set(Hf_2p,'PaperPosition','factory')	pp=get(Hf_2p,'PaperPosition');	mmpage(pp)end						

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -